Self Hosted Runner
Self Hosted Runner를 사용하는 이유는 Private Repo의 경우 빌드 시 분당 요금이 나가기 때문에
Github Actions의 Runner를 로컬에 설치해 로컬에서 Runner를 돌리는 것입니다.
그 이유는 Private Repofkeh Runner를 로컬로 돌리면 무료로 Github Actions를 이용 가능합니다.
Github Repository Setting -> Actions -> Runner -> New Self-Hosted Runner 클릭
설정하고자 하는 로컬 머신에 해당되는 OS를 선택하면 OS 별로 설정하는 방법이 Download와 Configure란에 설명되어 있습니다.
Mac 기준
Self-Hosted-Runner로 등록하고자 하는 기기에서 폴더 생성
mkdir actions-runner && cd actions-runner
가장 최신의 Runner 패키지 다운로드
curl -o actions-runner-osx-arm64-2.304.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.304.0/actions-runner-osx-arm64-2.304.0.tar.gz
Hash 유효성 검사 (선택사항)
echo "789fc57af2f0819d470fcc447e2970f201cfc8aa1d803d4e5b748ec4c5d10db8 actions-runner-osx-arm64-2.304.0.tar.gz" | shasum -a 256 -c
다운로드 받은 압축파일 압축해제
tar xzf ./actions-runner-osx-arm64-2.304.0.tar.gz
저장소 연결
Github가 로컬머신에 접속하는 방식이 아닌 로컬머신에서 Github 저장소로 접근하기 떄문에 주소와 토큰을 설정해야 합니다.
토큰의 경우 개인 계정 - Settings - Developer Setting - Personal Access Tokens - Generate New Token에서
admin:enterprise - manage_runners:enterprise 로 발급받을 수 있습니다.
./config.sh --url [저장소 주소] --token [토큰값]
# 예시
./config.sh --url https://github.com/spacedustz/Query-Builder --token WDFJ789WFJW7889JFJWJF
토큰과 Repository 주소를 등록하면 이 창이 뜨게 됩니다.
- Enter the name of runner group to add this runner to -> Enter 입력 (Default)
- Enter the name of runner -> Runner 이름 지정
- This Runner will have the following labels -> Enter 입력 (라벨 지정 X)
- Enter name of work folder -> Runner 폴더명 지정

정상적으로 Github에 등록이 되면 Github의 Runners에서도 목록을 확인할 수 있습니다.
등록한 Self-Hosted-Runner를 활성화시키기 위해서는 해당 로컬 기기의 Actions-Runner 폴더에서 run.sh 프로그램을 실행시킵니다.
./run.sh
run 스크립트를 실행하고 Runner가 Idling 중인 상태
그 후, Spring Boot Server 내부의 Yaml Work Flow 파일 안에 Self-Hosted-Runner를 통해 빌드되도록 설정해주면 됩니다.
runs on: self-hosted
Push를 하고 Self Hosted Runner가 잘 동작중인 모습
Self-Hosted-Runner가 만약 여러개인 경우
runs on: [ self-hosted, linux, x64 ]
'⚙️ Ops > CI & CD' 카테고리의 다른 글
[Jenkins] Jenkins 기본 설정 (On Container) (0) | 2023.05.26 |
---|---|
[Jenkins] AWS LightSail 설정 (0) | 2023.05.26 |
Work flow Commit Message Filter (0) | 2023.05.24 |
Compress/Upload Error Report & Cache Gradle (0) | 2023.05.23 |
CI & CD Tool 선정 (0) | 2023.05.23 |