とことんDevOps | 日本仮想化技術が提供するDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けするとことんDevOpsでは、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果など、DevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、アジャイル開発、コンテナ開発など

開催予定の勉強会

各種SNSのフォローもよろしくお願いいたします。

GitHub Actionsでself-hosted runnerを使ってみる

検証環境

  • Ubuntu 22.04

Runner追加

docs.github.com

  1. GitHubにリポジトリを追加
  2. Settings > Actions > Runnersからランナーを追加
  3. 追加する画面にいくと以下のように追加手順が表示されるので、ランナーとなるマシンにSSHログインし実行する

config.shを実行すると以下のようにインタラクティブな設定に入ります。今回はデフォルトのままで十分だと思いますが、ランナーを複数保持する場合は見分けがつくようにした方がいいかもしれません。

  • Enter the name of the runner group to add this runner to: [press Enter for Default]

  • Enter the name of runner: [press Enter for {{Hostname}}]

    • ランナー名を指定します。デフォルトはランナーが動くホストの「ホスト名」です。
  • This runner will have the following labels: 'self-hosted', 'Linux', 'X64'
    Enter any additonal labels (ex. label-,label-2): [press Enter to skip]

    • self-hosted runnerにつけるラベルを追加できます。デフォルトでself-hosted OS Architectureが付与されています。
  • Enter name of work folder: [press Enter for _work]

    • このランナーのワーキングディレクトリを指定します。デフォルトは「_work」です。

ここまでエラーなく完了したら、run.shを実行してIdle状態にしておきます。

このままではこのホストから抜けることができません。run.shが自動実行されるようにしておきましょう。

sudo ./svc.sh install $USER

svc.shを実行するとSystemdにサービスが登録され、再起動後も自動実行されるようになります。./svc.sh installの引数に実行するユーザーのユーザー名の指定を忘れないでください。ちなみにUnitの中身はこのようになっていました。

Workflow追加

では実際にself-hosted runnerを動かせるようWorkflowを追加します。

self-hosted runnerを設定したリポジトリをCloneして.github/workflows/main.yamlを作成してください。

main.yamlの中身は以下です。

on: push

jobs:
  hello:
    runs-on: self-hosted

    steps:
      - run: echo 'Hello World!'

GitHubにpushするとActionsが動き出します。

動いてる最中にRunnerの画面を確認すると以下のように実行されているのがわかります。

Runner削除

最後に片付けをして終わります。

Settings > Actions > Runnersから削除したいランナーを選んでクリックします。右上に赤いDeleteボタンがでているのでポチ。

赤枠の通り、ランナー側でも削除処理を実行して完了です。

まとめ

簡単に追加することができました。独自のビルド環境が必要な場合や、Enterprise版、ジョブの実行時間が長すぎる場合なんかはself-hosted runnerを検討してもいいかもしれません。その一方でデメリットもありそうです。メンテナンスの手間は必ず増えますし、github-hostedとself-hostedでは入っているパッケージも違います。github-hostedなイメージはコチラから確認できます。