self-hosted runner 실행을 위해서 github 도움말에는 다음과 같이 안내하고 있다.
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64-2.285.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.285.1/actions-runner-linux-x64-2.285.1.tar.gz
echo "5fd98e1009ed13783d17cc73f13ea9a55f21b45ced915ed610d00668b165d3b2 actions-runner-linux-x64-2.285.1.tar.gz" | shasum -a 256 -c
tar xzf ./actions-runner-linux-x64-2.285.1.tar.gz
./config.sh --url https://github.com/dasomoli/repository --token TOKENTOKENTOKENTOKEN
./run.sh
여기서 config.sh
에 넘기는 토큰은 REST API를 사용하는 다음 명령어로 얻을 수 있다.
curl \
-u USER_NAME:YOUR_PERSONAL_ACCESS_TOKEN -X POST \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/USER_NAME/REPO_NAME/actions/runners/registration-token
다음과 같이 jq를 이용해서 .token 값을 가져와서 쉘 변수 내에 설정하는 것도 가능하다.
RUNNER_TOKEN="$(curl -XPOST -fsSL \
-H "Authorization: token YOUR_PERSONAL_ACCESS_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/USER_NAME/REPO_NAME/actions/runners/registration-token" \
| jq -r '.token')"
config.sh
는 bin/installdependencies.sh
를 실행하고, 나중에 Runner.Listner
를 실행한다. 이 때 넘기는 인자는 bin/Runner.Listener configure
뒤에 인자로 넘어간다. config.sh
의 다음 줄에서 확인할 수 있다.
77 if [[ "$1" == "remove" ]]; then
78 ./bin/Runner.Listener "$@"
79 else
80 ./bin/Runner.Listener configure "$@"
81 fi
systemd를 사용하는 리눅스 시스템의 경우 서비스로 설치해서 사용하려면 다음과 같이 하면 된다고 한다.
sudo ./svc.sh install
sudo ./svc.sh start