概要
【GitHub Actions】Go言語の自動テストからリリースまでを作ってみた と GitHub Actions for Go を参考にLinux, Mac, WindowsでGo言語製ツールをテストした。 あとGitHub Actionsのワークフロー構文も参考にした。
成果物は下記リンクを参照。
https://github.com/famasoon/crtsh/blob/master/.github/workflows/go_test.yml
内容は.github/workflows/go_test.yml
の中。
name: Run tests on multi environment
on: [push, pull_request]
jobs:
test:
strategy:
matrix:
go-version: [1.12.x, 1.13.x]
platform: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
- name: Install Go
uses: actions/setup-go@v1
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v1
- name: Get dependcies
run: go get -v -t -d ./...
- name: Test
run: go test ./...
解説
name
: ワークフローの名前on
: イベントの種類。今回はpush
もしくはpull request
を検知しワークフローを開始するjobs
: イベントを検知した時の一連のタスクstrategy
: 各ジョブごとに設定できる環境設定matrix
: Go言語の複数バージョンと複数プラットフォームを設定した。ワークフロー構文に詳細が書いてあるので要参照runs-on
: 実行するプラットフォームを書く。今回はmatrix
に記入したプラットフォームを参照させた
あとは各ステップの要点を書く
uses: actions/setup-go@v1
: Go言語の環境をワークフローを実行しているコンテナに作成。go-version: ${{ matrix.go-version }}
で複数バージョンを試すようにしているuses: actions/checkout@v1
: ワークフローの実行環境にコードをチェックアウトしてくれる。これでpush
なりpull request
をしたコードをワークフロー環境に移すrun: go get -v -t -d ./...
: 依存関係にあるコードを落としてきたりユニットテストを実行するrun: go test ./...
: 当該リポジトリの内のパッケージのテストを実施する
当たり前だが各パッケージのテストをいい加減に書いていると無条件で通ってしまうので気をつけるように。 以上。