推送标签时,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 }}"
当前设置的缺点是我必须等到我们删除一个版本才能使用最新版本。这也意味着 latest 与 GitHub 中的 Master 分支不同步。每当我的自动化测试成功并合并到主分支时,我都想构建和发布最新的 - 可能每天几次。
我希望 goreleaser 在不同的场景中构建发布。
- 每当我将拉取请求合并到主、构建和推送最新的
- 每当我标记发布、构建和推送 semver 标签时
实现这一点的合乎逻辑的方法是简单地拥有 2 个 github 操作,它们将在不同的 .goreleaser.yml 文件上运行。但是问题是我找不到覆盖 goreleaser.yaml 的方法