[github] self-hosted runner

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.shbin/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