(Translated by https://www.hiragana.jp/)
GoReleaserでハマったところ
2023/04/28

GoReleaserでハマったところ

GoでCLIをいたらgithub actionsで自動的じどうてきにビルドしてリリースしてしまいたい。

GoReleaser を使つかえばYAMLファイルいちまい簡単かんたんにできる!という解説かいせつがいっぱいつかるのでそれらをながらやってみたけどいくつかハマったのでメモをのこしておく。

main.goがルートディレクトリにない場合ばあい

リポジトリルートに main.go (package main) をレイアウトしてない場合ばあいは、以下いかのような内容ないようふく.goreleaser.yaml ファイルをルートディレクトリにいて設定せっていをカスタムする必要ひつようがある。

builds:
  - main: ./path/to/cmddir

403 Resource not accessible でこける

以下いかのようなエラーが場合ばあい

 publishing
    • scm releases
      • creating or updating release                 repo=bayashi/go-edge tag=v0.1.8
  ⨯ release failed after 17s                 error=scm releases: failed to publish artifacts: could not release: POST https://api.github.com/repos/bayashi/go-edge/releases: 403 Resource not accessible by integration []
Error: The process '/opt/hostedtoolcache/goreleaser-action/1.17.2/x64/goreleaser' failed with exit code 1

エラーメッセージは error=scm releases: failed to publish artifacts: could not release で、 403 Resource not accessibleわれているので権限けんげんりないっぽい。

scm releases というのは、今回こんかいはgithub actionsでgithubでリリースしようとしてるので、githubでの権限けんげんはなしであると。

GoReleaserのドキュメント によると、secrets.GITHUB_TOKENわりに Personal Access Token (PAT) を発行はっこうして設定せっていせよといてある。

われたとおりに PAT を発行はっこう(repoのread/write権限けんげんだけあればOK)して secretに設定せっていして実行じっこうすると、するっとかよってしまう。

しかし、リポジトリごとに PAT を都度つど設定せっていするのは面倒めんどうくさい。一般いっぱんてきには secrets.GITHUB_TOKENとおるようなのでどこかにその設定せっていがあるはず。

Workflow permissions

リポジトリの Settings > Actions > General と遷移せんいして、Workflow permissions項目こうもく設定せっていがある。

おそらく、read権限けんげんほうになっているので、Read and write permissionsほう設定せっていえる。

ぱわー

サイトない検索けんさく