地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Go】GitHubActions GoのCIテンプレート

build -> test -> lintをするためのgo用のテンプレートyaml

lintは以下を使ってます。

github.com

jobs:

  setup:
    runs-on: ubuntu-latest
    steps:
      - name: set up
        uses: actions/setup-go@v2
        with:
          go-version: ^1.13
        id: go
      - name: check out
        uses: actions/checkout@v2
      
      - name: Cache
        uses: actions/cache@v2.1.0
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-

  build:
    needs: setup
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: build
        run: go build ./...

  test:
    needs: setup
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: test
        run: go test ./... -v

  lint:
    needs: setup
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v1
        with:
          version: v1.31

よく見るサンプルだとクロスコンパイルとか入っていて公開用ライブラリだと便利そうって思いもあるけどそもそもそんなにマルチアーキテクチャで動かすことがないので個人的にはこれくらいシンプルで良いかなって感じで使ってます。(タグ付でリリースジョブ定義も同じ理由でやってない)

  • buildできる
  • lintを通す
  • testを通す

ぐらいが出来れば良い個人プロジェクトならこれで十分。