golangci-lint を GitHub Actions で使う

golangci-lintgo vet をはじめ複数の lint を集約して結果を表示してくれる優れものである。 かつては GolangCI.com で GitHub と連携できていたのだが,2020年4月でサービスが停止してしまい,寂しい限り。

と思っていたのだが,いつの間にか公式の GitHub Actions が用意されていた。 気付かなんだよ。 不覚。

使い方は簡単。 リポジトリの .github/workflows/ ディレクトリに YAML ファイル(例えば lint.yml)を置き,以下のように記述する。

name: golangci-lint
on:
  push:
    tags:
      - v*
    branches:
      - master
  pull_request:
jobs:
  golangci:
    strategy:
      matrix:
        go-version: [1.15.x]
        os: [ubuntu-latest, macos-latest, windows-latest]
    name: lint
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v2
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v2
        with:
          # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
          version: v1.31

          # Optional: working directory, useful for monorepos
          # working-directory: somedir

          # Optional: golangci-lint command line arguments.
          # args: --issues-exit-code=0

          # Optional: show only new issues if it's a pull request. The default value is `false`.
          # only-new-issues: true

また,リポジトリ直下の .gitattributes ファイルに以下の記述を追加する。

*.go text eol=lf

これで pull request 時, master ブランチ1 への push 時,およびバージョンタグを打った際に golangci-lint が走る。 golangci-lintmatrix の組み合わせで並列処理されるようだ。

よーし,うむうむ,よーし。

まぁ,プラットフォーム依存のコードでもない限り Go 最新バージョンの ubuntu-latest だけでいいと思うけどね。

ブックマーク

参考図書

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)