emahiro/b.log

Drastically Repeat Yourself !!!!

Github Actions (β) を使う

Github Actions (β) がリリースされていたので、せっかくなので自分が現在作成しているプロジェクトをネタに Github Actions の設定を行ってみました。

まずはβに参加する

help ページから Github Actions に参加します。

https://help.github.com/ja/articles/about-github-actions#about-github-actions

このページの GitHub Actionsの限定パブリックベータへの参加をリクエストする というところから参加可能です。

使えるようになったら登録してるメールアドレス宛に連絡がきます。

設定

Github Actions が使えるようになるとリポジトリの上部に Actions タブが出てくるのでそこから設定を行います。

今回は今自分で作成している Go で書かれたプロジェクトを使って Github Actions の設定をしてみます。

ます最初に言語ごとに指定された「Set up workflow」を押下します。
押下すると {{ Project Name }}/.github/workflows/{{ $lang }}.yaml というファイルが生成されます。

Go を選択した場合、なぜか標準では dep を使うようになっているので通常の go get で依存関係を取得するように修正します。

デフォルトで作成される Workflow を定義した yaml ファイルは以下

name: Go
on: [push]
jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:

    - name: Set up Go 1.12
      uses: actions/setup-go@v1
      with:
        go-version: 1.12
      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 .

Install Dependencies で go modules を使うことと、今回はテストを走らせたいだけなので Build を step に追加するのではなく、Test を step に追加します。

詳細な Workflow syntacs は こちら に記載してあります。

設定して commit を行うとActions を設定したファイルが作成されます。

{{ $Project }}/.github/workflows/{{ $lang }}.yaml があると自動的に Actions が走ります。
(どうやらファイル名はなんでも大丈夫なようです。追記あり)

あとは Actions タブを見ると自動的に設定した通りに自動でワークフローが実行されているのがわかります。

サンプル: https://github.com/emahiro/glc/actions

まとめ

Github Actions は想像以上に簡単にセットアップできました。
Github 謹製のツールなので CI から解放されるのもとてもいいなと思います。

早く正式版のリリースがされてほしいなと感じました。

追記

複数 の Goのバージョンでテストする

複数のGoのバージョンに対応させた設定ファイルを用意します。

ref: https://github.com/emahiro/glc/tree/master/.github/workflows

imageについて

現状 github の公式が指定してる環境しか作ることはできません。
今後 image を指定できるようになってほしいなと思いました。特殊な環境 (appengine とか) を作るのがまだめんどくさそう...

やってる人とかいるのかな。