GitHub ActionsのSelf-hosted runnersで好きな場所でワークフローを動かす
self-hosted runner
Self-hosted runners:
- Receive automatic updates for the self-hosted runner application only. You are responsible updating the operating system and all other software.
- Can use cloud services or local machines that you already pay for.
- Are customizable to your hardware, operating system, software, and security requirements.
- Don’t need to have a clean instance for every job execution.
- Are free to use with GitHub Actions, but you are responsible for the cost of maintaining your runner machines.
- Self-hosted runnnerアプリのみ自動アップデート。OS等は自身でメンテナンス。
- クラウドサービスやローカルマシン上で実行できる
- OSやハードウェアを自由にカスタマイズ
- ジョブ実行のたびにクリーンなインスタンスとする必要はない
- GitHub Actionsと組み合わせて無料で利用できるが、Runnnerマシンのメンテナスは自分で行う
A self-hosted runner is automatically removed from GitHub if it has not connected to GitHub Actions for more than 30 days.
30日以上接続されない場合はGitHubから削除される。
The self-hosted runner application communicates with GitHub using the HTTPS protocol for inbound and outbound traffic. You must ensure that the machine has the appropriate network access to communicate with the GitHub URLs listed below.
1 | github.com |
GitHubとの通信はHTTPSで行われる。
RunnnerホストでLISTENするわけではないので、NAPTを介してもOK。
self-hosted runnerを登録する
Settings -> Actions -> Self-hosted runnes
でAdd Runner
をクリック
Runnerホスト上で実行するコマンドが表示されるので、順次実行する。
Runnerホストでコマンド実行する
表示されたコマンドを実行していく。./run.sh
を実行すると待機状態になる。
1 | local-ubuntu:~$ mkdir actions-runner && cd actions-runner |
登録された状態を確認する
登録されたホストが表示され、Idle
状態となっている。
runs-on: self-hosted
を設定し、ジョブを実行する。
この例ではdocker-composeが入っていないホストのためエラーになっているが、Runnerホストの作成した_work
ディレクトリ上で実行されていることを確認することができる。
Runnerホストを終了する
Runnerホスト側で.run.sh
を停止する。
1 | 2020-05-19 07:48:19Z: Listening for Jobs |
GitHub側ではOffline
となる。
実行後のRunnerホストでは、_work
に実行時の状態が残っている。
1 | local-ubuntu:~/actions-runner$ ls |