🐡

AmazonLinux2022をGitHub self-hosted runnersとして動かす

2022/04/17に公開

https://aws.amazon.com/jp/amazon-linux-2/faqs/

Amazon Linux 2 は、2023 年 6 月 30 日までサポートされ、セキュリティとメンテナンスの更新が提供されます。

AmazonLinux2のサポートが2023年6月30日までなので、AmazonLinux2022でself-hosted runnerを試してみました。

サンプルコード

AutoScalingGroupでt3.smallのインスタンスを1台起動し、ユーザデータでセルフホストランナーとして登録されるよう処理するようにしています。

https://github.com/kishii4726/amazonlinux2022-for-self-hosted-runners

ユーザデータの処理

yumではなくdnfでパッケージ管理出来るようになっているのでdnfを使用して必要なパッケージを入れます。
libicuはランナー登録用スクリプト(config.sh)を実行する際に必要になります。

sudo dnf install -y jq git libicu-67.1-7.amzn2022.x86_64

デバッグ用途でセッションマネージャーを使用するためにssm-agentをインストールします。AmazonLinux2ではデフォルトで入っていますが、20220417時点のAmazonLinux2022では入っていません。

cd /tmp || exit
sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

run.shはrootで実行できないため、ec2-userを使用しています。ec2-userは権限昇格出来るため、config.shrun.sh実行用ユーザを作ることが望ましいです(が今回は省略しています)。
ランナー登録用トークンを取得するためのパーソナルアクセストークンはパラメータストアに格納したものを使用しています。

sudo su - ec2-user <<EOF
mkdir ~/actions-runner
curl -L https://github.com/actions/runner/releases/download/v2.288.1/actions-runner-linux-x64-2.288.1.tar.gz -o \
  ~/actions-runner/actions-runner-linux-x64-2.288.1.tar.gz
tar xzf ~/actions-runner/actions-runner-linux-x64-2.288.1.tar.gz -C ~/actions-runner
cd ~/actions-runner
./config.sh \
  --url "https://github.com/${owner}/${repository}" \
  --token $(curl -XPOST -sL -H "Authorization: token $(aws ssm get-parameters --with-decryption --names GITHUB_PERSONAL_ACCESS_TOKEN --region ap-northeast-1 | jq -r .Parameters[].Value)" \
  -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/${owner}/${repository}/actions/runners/registration-token" | jq -r .token) \
  --name $(curl -s http://169.254.169.254/latest/meta-data/instance-id) \
  --runnergroup Default \
  --labels ${label} \
  --work "_work"
./run.sh
EOF

インスタンスを起動してユーザデータの処理が終わるまで数分待つと、リポジトリ側でランナーとして認識されているのが確認出来ました。

Discussion