LoginSignup
5

More than 3 years have passed since last update.

Organization

GitHub Actionsでself-hosted runnersを試す

こんにちは。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 runnersAdding self-hosted runnersを参照下さい。

実行手順

今回はAWS上のEC2を実行環境にしてビルドを実行してみたので、その時の実行手順をご紹介します。

構成

ものすごく単純ですが、今回試した構成は以下の様な感じです。(プライベート用の環境で試しました)

構成図.png

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が必要なので注意してください。

  • リポジトリの『Settings』⇨『Actions』から、『Add runner』をクリックします
    add_runner.png

  • OSを選択します。Windows, Mac, Linuxから選べます。今回は『Linux』を選択します。

  • Self-hosted runnersにrunnerが追加されていることを確認します。
    runner.png

  • 実行環境で以下のコマンドを入力します。(成功すると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
  • GitHub側で接続できていることを確認する。接続すると、表示が「Idle」に変わる。
    idle.png

  • Workflowを書きます。runs-onにself-hostedを追加します。

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を使うと自前の実行環境を簡単に用意することができます。
自分で実行環境を用意したいという方は利用してみてはいかがでしょうか。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5