goreleaser отдельные потоки для слияния с master и для вырезания релиза
Действия 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 }}"
Недостатком нынешней установки является то, что мне приходится ждать, пока мы не вырежем релиз, чтобы поиграть с последней. Это также означает, что последняя версия не синхронизирована с веткой Master в GitHub. Я хотел бы создавать и публиковать последнюю версию - возможно, несколько раз в день - всякий раз, когда мои автоматические тесты будут успешными, и я сливаюсь с основной веткой.
Хотелось бы, чтобы goreleaser создавал публикации в разных сенариях.
- всякий раз, когда я объединяю запрос на перенос, чтобы освоить, построить и отправить последний
- всякий раз, когда я отмечаю релиз, создаю и нажимаю теги semver
Логическим способом добиться этого было бы просто иметь 2 действия github, которые будут работать с разными файлами .goreleaser.yml. Однако проблема в том, что я не могу найти способ переопределить goreleaser.yaml
1 ответ
вы можете переопределить файл конфигурации goreleaser с помощью
args: release --rm-dist -f path_to_goreleaser.yml
Хотя goreleaser откажется публиковать что-либо, если текущий коммит не является тегом. Возможно, вам нужно будет сделать какую-то автоматическую пометку для каждого коммита и запустить goreleaser для этого тега, решая шаблоны изображений и т.д., используя только шаблоны go.
Скорее всего, это будет очень взломано, но я думаю, что это может сработать.