My Note

自己理解のためのブログ

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

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してくれるのは楽ですね!)