Skip to content
Latchkey

GoReleaser vs cargo-dist: リリースの自動化

GoReleaserはGoプロジェクトのクロスプラットフォームなリリースのビルドと公開を自動化します。cargo-distはRustバイナリに対して同じことを行います。

GoReleaserは多くのOS/archターゲット向けにGoバイナリをビルドし、archiveを作成し、checksumとSBOMを生成し、単一のYAML設定からGitHub releasesに加えてHomebrew tapsやDockerイメージを公開します。cargo-distは同等のエンドツーエンドのリリース自動化をRustにもたらし、installer、shell/PowerShellのインストールスクリプト、クロスプラットフォームなバイナリ配布のためのCI workflowを生成します。両者は同じ問題を解決するエコシステム固有のツールで、選択は言語に従います。

GoReleasercargo-dist
エコシステムGoRust
クロスコンパイル多くのOS/arch多くのOS/arch
追加機能Brew、Docker、SBOMinstaller、shellスクリプト
設定YAMLCargo.toml + 生成されたCI
最適な用途Goバイナリの公開Rustバイナリの公開

CIでの利用

どちらもタグ時にCIで実行するよう設計されており、クロスコンパイル、パッケージング、checksum作成、リリース公開を自動で行います。GoReleaserはGoのCLI配布の標準で、cargo-distはRustバイナリの新興の標準であり、リリースworkflowのscaffoldまで行います。言語で選びましょう - 両者は重なりません。

高速化する

build(Goのmodule cacheまたはcargoのregistry/target)をキャッシュしてクロスコンパイルがウォームな状態で始まるようにし、matrixでターゲットを並列にビルドします。どちらもCIランナー上で実行され、より高速なマネージドランナーはマルチターゲットのビルドとパッケージングのステップを短縮します。

結論

archive、Homebrew、Dockerを伴ってプラットフォーム横断でGoバイナリを公開する場合: GoReleaser。installerと生成されたCIでRustバイナリを公開する場合: cargo-dist。判断は純粋に言語主導です - GoはGoReleaser、Rustはcargo-distを使います。

関連ガイド