こんにちは。LIFULL株式会社の花岡です。
11/05から、GitHub Actionsでself-hosted runnersが使えるようになりました。この機能を使用すると、GithHub Actionsの実行環境を自分で指定することができます。
今回プライベートで軽く触ってみたので、今回はその利用方法をご紹介したいと思います。
self-hosted runnersについて
GitHub Actionsでは、基本的にはGitHub側で用意している仮想環境でworkflowを実行するのですが、self-hosted runnersを使用すると実行環境を自分で指定することができます。例えばオンプレ環境でworkflowを実行したいとか、閉鎖環境内で無いと実行できないテストがある等、自前で用意した特殊な実行環境でテストしたい時に便利です。
(但し、publicリポジトリでは決して使用しないでください。悪意のあるコードがpushされて、実行環境で実行されてしまう可能性があります。)
その他詳しい情報については、About self-hosted runnersやAdding self-hosted runnersを参照下さい。
実行手順
今回はAWS上のEC2を実行環境にしてビルドを実行してみたので、その時の実行手順をご紹介します。
構成
ものすごく単純ですが、今回試した構成は以下の様な感じです。(プライベート用の環境で試しました)
NACLは以下の様に設定しました。
Inbound側はリターントラフィック用のポートを許可しておけば、workflowを実行することが可能です。
- Inbound
プロトコル | port | IP | ALLOW/DENY |
---|---|---|---|
TCP | 327658-65535 | 0.0.0.0/0 | ALLOW |
すべて | すべて | すべて | DENY |
Outboundは、http,httpsに加えてgit用にsshを許可しています。
- Outbound
プロトコル | port | IP | ALLOW/DENY |
---|---|---|---|
SSH | 22 | 0.0.0.0/0 | ALLOW |
HTTP | 80 | 0.0.0.0/0 | ALLOW |
HTTPS | 443 | 0.0.0.0/0 | ALLOW |
すべて | すべて | すべて | DENY |
手順
self-hosted runnersの追加はGitHubリポジトリの方で実施します。
設定にはAdminが必要なので注意してください。
-
OSを選択します。Windows, Mac, Linuxから選べます。今回は『Linux』を選択します。
-
実行環境で以下のコマンドを入力します。(成功すると
Connected to GitHub
と表示されます。)
$ mkdir actions-runner && cd actions-runner
$ curl -O https://githubassets.azureedge.net/runners/2.161.0/actions-runner-linux-x64-2.161.0.tar.gz
$ tar xzf ./actions-runner-linux-x64-2.161.0.tar.gz
$ ./config.sh --url https://github.com/xxx/xxx --token XXXXX
$ ./run.sh
√ Connected to GitHub
2019-12-03 22:14:23Z: Listening for Jobs
name: Go
on: [push]
jobs:
build:
name: Build
# self-hosted を追加する
runs-on: [self-hosted, linux]
steps:
- name: Set up Go 1.13
uses: actions/setup-go@v1
with:
go-version: 1.13
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v1
- name: Get dependencies
run: |
go get -v -t -d ./...
if [ -f Gopkg.toml ]; then
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure
fi
- name: Build
run: go build -v .
- git push して、実行環境でJobが成功していることを確認します。
2019-12-03 22:14:49Z: Running job: Build
2019-12-03 22:15:03Z: Job Build completed with result: Succeeded
終わりに
このように、self-hosted runnersを使うと自前の実行環境を簡単に用意することができます。
自分で実行環境を用意したいという方は利用してみてはいかがでしょうか。