self-hosted runner를 사용한 이유는 깃허브에서 제공하는 러너를 사용하면 ssh키를 입력하여 기본 제공 러너가 내 서버로 원격 접속해서 배포를 하게 되는데, 나는 내 서버의 ssh키를 누구에게도 알려주고 싶지 않았기 때문에 이를 사용하게 되었다.
self-host runner 설치
자신의 깃허브 계정에서 원하는 레포지토리의 setting 탭의 Actions -> Runners에 들어간다.
설정하고자 하는 로컬 머신에 맞는 이미지와 아키텍쳐를 선택한다.
나는 N100 기반의 머신이기 때문에 x64를 선택하였다.
선택하면 아래와 같이 친절하게 명령어가 주어진다.
Self-hosted Runner로 등록하고자 하는 기기에서 폴더 생성
mkdir actions-runner && cd actions-runner
가장 최신의 Runner 패키지 다운로드
curl -o actions-runner-linux-x64-2.321.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.321.0/actions-runner-linux-x64-2.321.0.tar.gz
다운로드 받은 압축파일 압축해제
tar xzf ./actions-runner-linux-x64-2.321.0.tar.gz
저장소 연결
./config.sh --url [저장소 주소] --token [토큰 값]
Github가 로컬머신에 접속하는 방식이 아닌 로컬머신에서 github 저장소로 접속하는 방식이기 때문에 github 저장소 주소와 액세스 토큰으로 설정해야 한다.
저장소가 연결되면 아래와 같은 화면이 나온다.
기본 설정
--------------------------------------------------------------------------------
| ____ _ _ _ _ _ _ _ _ |
| / ___(_) |_| | | |_ _| |__ / \ ___| |_(_) ___ _ __ ___ |
| | | _| | __| |_| | | | | '_ \ / _ \ / __| __| |/ _ \| '_ \/ __| |
| | |_| | | |_| _ | |_| | |_) | / ___ \ (__| |_| | (_) | | | \__ \ |
| \____|_|\__|_| |_|\__,_|_.__/ /_/ \_\___|\__|_|\___/|_| |_|___/ |
| |
| Self-hosted runner registration |
| |
--------------------------------------------------------------------------------
# Authentication
√ Connected to GitHub
# Runner Registration
Enter the name of the runner group to add this runner to: [press Enter for Default]
Enter the name of runner: [press Enter for seungwook-server]
This runner will have the following labels: 'self-hosted', 'Linux', 'X64'
Enter any additional labels (ex. label-1,label-2): [press Enter to skip]
√ Runner successfully added
√ Runner connection is good
# Runner settings
Enter name of work folder: [press Enter for _work]
√ Settings Saved.
모든 질문에 Enter를 눌러서 기본값으로 세팅하였다.
정상적으로 등록이 되면 Runners에서 목록을 확인할 수 있다.
Runner 실행
run.sh는 GitHub Actions Self-hosted Runner를 실행하기 위한 주요 스크립트이다.
이 스크립트를 실행하면, 러너가 GitHub와 연결되어 워크플로우 작업을 처리할 준비 상태로 전환된다.
./run.sh
러너 실행
- GitHub와 연결하여 워크플로우 작업(Job)을 대기하는 상태로 만든다.
- 러너가 등록된 레포지토리에서 워크플로우가 트리거되면 해당 작업을 처리한다.
GitHub Actions와 통신
- GitHub Actions 플랫폼과 지속적으로 연결을 유지하면서 작업 요청을 수신하고, 결과를 다시 GitHub로 전송한다.
백그라운드 실행 (서비스 모드 아님)
- run.sh는 현재 터미널 세션에서 실행되며, 터미널을 닫으면 실행이 중단된다.
- 서비스로 실행하려면 svc.sh를 사용해야 한다.
재부팅 후에도 자동 시작 설정
서버 재부팅 시 러너가 자동으로 시작되도록 설정하려면 아래의 명령어를 사용한다.
sudo ./svc.sh install
sudo ./svc.sh start
러너 상태 확인
systemctl status actions.runner.<repo_name>.<runner_name>
러너 중지
sudo ./svc.sh stop
러너 제거
sudo ./svc.sh uninstall
러너 사용
이후 워크플로우 작성 시 jobs의 run-on을 self-hosted로 설정해서 사용하면 된다.
# Workflow.yml 파일
...
jobs:
Job이름:
runs-on: self-hosted
...
레퍼런스
'서버 구축기' 카테고리의 다른 글
[Ubuntu] GeoIP 를 이용한 해외 IP SSH 접속 차단 (0) | 2025.01.02 |
---|---|
[Nginx] Nginx 기본 보안 설정 (1) | 2024.12.28 |
[MySQL] MySQL 보안 설정 (1) | 2024.12.27 |
[Ubuntu] 외장 SSD ext4 초기화 + 마운트 (0) | 2024.12.26 |
[Ubuntu] ssh 원격접속 보안 강화 (0) | 2024.11.29 |