問題

golangci-lint をコンテナ内で実施すると以下エラーが発生した コンテナ内でのみ発生して、ホストで実行すると発生しなかった

WARN [runner] Can't process results by diff processor: can't prepare diff by revgrep: no version control repository found
cmd/main.go:1: : error obtaining VCS status: exit status 128
        Use -buildvcs=false to disable VCS stamping. (typecheck)

原因

golangci-lint は git の情報を取得しようとするが、コンテナ内の 作業ディレクトリが git の安全なディレクトリとして登録されていないために発生する

解決方法

  • 以下 .gitconfig を作成して、compose.yaml で /root/.gitconfig:ro でマウントした

    [safe]
      directory = /work     # コンテナ内の作業ディレクトリを指定
      directory = /work/api # コンテナ内の作業ディレクトリを指定