immutable releasesを有効にする際のtagprとgoreleaserの設定
GitHubのImmutable Releasesがパブリックプレビューとなりました。ソフトウェアを公開している方は積極的にオンにすると良いでしょう。suzuki-shunsukeさんが早速zennを書かれているので、詳しい解説はそちらに譲ります。
- Releases now support immutability in public preview - GitHub Changelog
- GitHub の Immutable Releases を有効にしてセキュリティインシデントを防ごう
ここでは、Go製のソフトウェアで実行ファイルもリリースされている方の中には、tagprと goreleaserを組み合わせて使っている方がそれなりにいると思うので、その場合の設定についてお知らせします。
Draftリリースを作り、それを再利用する
これだけです。具体的には以下です。
.tagpr
にrelease = draft
設定を追加する.goreleaser.yml
にrelease.use_existing_draft: true
設定を追加する
例を以下に示します。
# .tagpr
[tagpr]
release = draft
# .goreleaser.yml
release:
use_existing_draft: true
これは、具体的にはtagpr
が作成するGitHub ReleaseをDraftとして作成し、goreleaser
にそのDraft Releaseを再利用させています。
release = draft
の設定がないと、tagprが作ったリリースをその後変更できずファイルをアップロードできなくなりますし、 use_existing_draft: true
設定がないと、goreleaserは別でリリースを作ってしまいます。
ということで、tagpr
とgoreleaser
の組み合わせは、すでに、immutable releasers readyになっているので、是非設定を有効にしてみて下さい。
余談
tagpr
地味ながら社会的責任を伴うツールになってきているのを感じているので、これを機にGitHub Actions周りの設定を見直しました。もう少し調整予定です。また、観念してcommit hashでpinするようにもしました。pinact
便利。ちゃんとメンテナンスしていきます。
実行ファイルのリリースについては、個人的には自分がメンテナンスしている ghrを使うことが多く、これは設定なしでドラフトリリースを見つけて再利用してくれる機能を入れており、もともとドラフトリリースを作ってから、ファイルアップロード後に公開するワークフローにしていたので設定変更も必要なかった。
ただ、 ghr
自体のメンテナンスはそこまで活発にしているわけではないので、そこまで薦められる状態にはなっていないと思います。
haya14busaさんが、最近 trusted-go-releaser を含めた、サプライチェーン周りのツールチェインを整えている雰囲気を感じるので期待しています!