GitHub Actionsで go test & lint(staticcheck)を実行する
はじめに
Go Echoで APIを作成していて PullRequest時にテストを走らせたかったので github-actionsで用意しました。
go Echoで実装したAPIサーバーに対して httptestパッケージ を利用してテストコードを作成 - My Note
"go test & lint" するコードは以下の記事で用意しました。lintに関しては、golintが非推奨になっていたので、 staticcheck を利用します。
Github Actons
利用する github-actionsライブラリ
checkout github.com
test github.com
lint(staticcheck) github.com
staticcheck.conf を プロジェクトのrootディレクトリに配置。有効にするルールを定義します。 今回は以下を利用。
checks = ["inherit", "ST1003", "ST1020", "ST1021", "ST1022"]
*) 参考
【Go】デファクトなlinter staticcheckの設定方法 - Qiita
- 以下のように yamlを配置。
├── .github │ └── workflows │ └── test.yaml
name: Go CI (test/lint) on: pull_request: branches: - main env: GO_VERSION: 1.16 jobs: deploy: runs-on: ubuntu-latest steps: - uses: 'actions/checkout@v2' - name: Setup Go uses: actions/setup-go@v2 with: go-version: ${{ env.GO_VERSION }} - name: Run Test run: | go test -v ./... go vet -v ./... working-directory: ./api - name: Run Lint staticcheck uses: dominikh/staticcheck-action@v1.0.0 with: version: "2021.1.1" install-go: false
さいごに
これでEchoで作成しているGoアプリをGithub-Actionsを利用して mainブランチに対して "PullRequest" を作成したら go-testを走らせて "merge" したら GAEにデプロイする仕組みが整いました。(やっぱり自動でCI/CDしてくれるのは楽ですね!)