タグがプッシュされると、GoReleaser & GitHub アクションは現在次のように構成されています。
# github action
name: Release
on:
push:
tags:
- '*'
env:
REF: ${{ github.event.inputs.tag || github.ref }}
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# .goreleaser.yaml snippet
dockers:
- image_templates:
- "foo/bar:latest"
- "foo/bar:v{{ .Major }}"
- "foo/bar:v{{ .Major }}.{{ .Minor }}"
- "foo/bar:{{ .Tag }}"
現在のセットアップには、最新のリリースをカットするまで待たなければならないという欠点があります。これは、最新が GitHub のマスター ブランチと同期していないことも意味します。自動化されたテストが成功したときはいつでも、最新のものをビルドして公開したいと思います。
goreleaser にさまざまなシナリオでパブリッシュを構築してもらいたいです。
- プルリクエストをマスターにマージするたびに、最新のものをビルドしてプッシュします
- リリースにタグを付けるたびに、semver タグをビルドしてプッシュする
これを達成するための論理的な方法は、異なる .goreleaser.yml ファイルで動作する 2 つの github アクションを持つことです。ただし、問題は、goreleaser.yaml をオーバーライドする方法が見つからないことです。