LoginSignup
0
0

More than 1 year has passed since last update.

GoReleaser で指定のターゲットのみを対象にアーティファクトを作成したい

Last updated at Posted at 2023-02-26

goreleaser release コマンドに --single-target フラグが存在しない

GoReleaser の build サブコマンドには --single-target フラグがあり、設定ファイルで複数の GOOS、GOARCH をターゲットとしていた場合でも特定のターゲットのみを対象にビルドを実行できます。しかし、release サブコマンドにはその機能がありません。CI ジョブでアーティファクトの作成が成功するかをテストしようとすると、GoReleaser の設定ファイルに指定した GOOS と GOARCH のすべての組み合わせでアーティファクトが作成されるため、CI ジョブの実行時間が長くなる問題があります。正しくアーティファクトが作成できるかを確認するだけであれば、全てを対象とせずに特定のターゲットのみの実行で十分です。

goreleaser-filter ツールを使う

GoReleaser は v1.15.2 時点で将来的に指定したターゲットのアーティファクトを作成する機能を追加する予定があるようですが、Pro 版のみに提供予定のようです。

そこで、イシューコメントで提案のある goreleaser-filter ツールを使います。このツールは .goreleaser.yaml ファイル(GoReleaser の設定ファイル)を標準入力経由で渡すと指定した GOOS と GOARCH のみをターゲットとするように書き換えた設定ファイルを出力してくれるシンプルなツールです。

例えばローカル環境の GOOS と GOARCH のみをターゲットとしてアーティファクトを作成したい場合は次のようにします。

cat .goreleaser.yml | \
    go run github.com/t0yv0/goreleaser-filter@v0.3.0 -goos "$(go env GOOS)" -goarch "$(go env GOARCH)" | \
    goreleaser release -f - --skip-validate --rm-dist --snapshot

べんり。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0