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 создавал публикации в разных сенариях.

  1. всякий раз, когда я объединяю запрос на перенос, чтобы освоить, построить и отправить последний
  2. всякий раз, когда я отмечаю релиз, создаю и нажимаю теги semver

Логическим способом добиться этого было бы просто иметь 2 действия github, которые будут работать с разными файлами .goreleaser.yml. Однако проблема в том, что я не могу найти способ переопределить goreleaser.yaml

1 ответ

вы можете переопределить файл конфигурации goreleaser с помощью

      args: release --rm-dist -f path_to_goreleaser.yml

Хотя goreleaser откажется публиковать что-либо, если текущий коммит не является тегом. Возможно, вам нужно будет сделать какую-то автоматическую пометку для каждого коммита и запустить goreleaser для этого тега, решая шаблоны изображений и т.д., используя только шаблоны go.

Скорее всего, это будет очень взломано, но я думаю, что это может сработать.

Другие вопросы по тегам