mirror of
https://github.com/goreleaser/goreleaser-action
synced 2026-08-31 14:28:27 +00:00
Look for GoReleaser in the runner tool cache before a download. This makes a second use of the action in the same job, or any job on a self-hosted runner, install immediately. Add an opt-in `cache-binary` input that also stores the binary in the GitHub Actions cache. When it hits, the action does not download the release archive, the checksums and the signature bundle again. Cache errors are not fatal and fall back to a download. The runner tool cache entry is now keyed by distribution, so a Pro binary is no longer returned for an OSS install of the same version. Closes #476 Co-authored-by: timbretimber <105982513+timbretimber@users.noreply.github.com> Co-authored-by: Akkuman <akkumans@qq.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
248 lines
6.8 KiB
YAML
248 lines
6.8 KiB
YAML
name: ci
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
|
|
permissions:
|
|
contents: read
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 10 * * *'
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- 'master'
|
|
- 'releases/v*'
|
|
tags:
|
|
- 'v*'
|
|
pull_request:
|
|
|
|
jobs:
|
|
ci:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
version:
|
|
- latest
|
|
- '~> 2.13'
|
|
distribution:
|
|
- goreleaser
|
|
- goreleaser-pro
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: stable
|
|
- name: Check
|
|
uses: ./
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
args: check --verbose
|
|
workdir: ./test
|
|
- name: GoReleaser
|
|
if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }}
|
|
uses: ./
|
|
env:
|
|
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
|
|
with:
|
|
distribution: ${{ matrix.distribution }}
|
|
version: ${{ matrix.version }}
|
|
args: release --skip=publish --clean --snapshot
|
|
workdir: ./test
|
|
|
|
install-only:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
version:
|
|
- latest
|
|
- '~> 2.13'
|
|
distribution:
|
|
- goreleaser
|
|
- goreleaser-pro
|
|
cosign:
|
|
- true
|
|
- false
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: 1.18
|
|
- name: Install cosign
|
|
if: matrix.cosign
|
|
uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
|
|
- name: GoReleaser
|
|
if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }}
|
|
uses: ./
|
|
with:
|
|
distribution: ${{ matrix.distribution }}
|
|
version: ${{ matrix.version }}
|
|
install-only: true
|
|
- name: Check
|
|
if: ${{ !(github.event_name == 'pull_request' && matrix.distribution == 'goreleaser-pro') }}
|
|
run: |
|
|
goreleaser check --verbose
|
|
|
|
cache-binary:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
# The first workflow run saves the binary, later runs restore it.
|
|
- name: GoReleaser
|
|
uses: ./
|
|
with:
|
|
version: '~> v2'
|
|
install-only: true
|
|
cache-binary: true
|
|
- name: Check
|
|
run: goreleaser --version
|
|
|
|
signing:
|
|
runs-on: ${{ matrix.os }}
|
|
if: github.event_name != 'pull_request'
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: 1.18
|
|
- name: Import GPG key
|
|
id: import_gpg
|
|
uses: crazy-max/ghaction-import-gpg@2dc316deee8e90f13e1a351ab510b4d5bc0c82cd # v7.0.0
|
|
with:
|
|
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY_TEST }}
|
|
passphrase: ${{ secrets.PASSPHRASE_TEST }}
|
|
- name: Check
|
|
uses: ./
|
|
with:
|
|
version: latest
|
|
args: -f .goreleaser-signing.yml check --verbose
|
|
workdir: ./test
|
|
env:
|
|
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
|
|
- name: GoReleaser
|
|
uses: ./
|
|
with:
|
|
version: latest
|
|
args: -f .goreleaser-signing.yml release --skip=publish --clean --snapshot
|
|
workdir: ./test
|
|
env:
|
|
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
|
|
|
|
upload-artifact:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: 1.18
|
|
- name: Check
|
|
uses: ./
|
|
with:
|
|
args: check --verbose
|
|
workdir: ./test
|
|
- name: GoReleaser
|
|
uses: ./
|
|
with:
|
|
args: release --skip=publish --clean --snapshot
|
|
workdir: ./test
|
|
- name: Upload assets
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: myapp
|
|
path: ./test/dist/*
|
|
|
|
dist:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: 1.18
|
|
- name: GoReleaser
|
|
uses: ./
|
|
with:
|
|
args: release --config .goreleaser-dist.yml --skip=publish --clean --snapshot
|
|
workdir: ./test
|
|
- name: Check dist
|
|
run: |
|
|
tree -nh ./test/_output
|
|
|
|
nightly:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
distribution:
|
|
- goreleaser-pro
|
|
- goreleaser
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up Go
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: 1.18
|
|
- name: GoReleaser
|
|
uses: ./
|
|
with:
|
|
install-only: true
|
|
distribution: ${{ matrix.distribution }}
|
|
version: nightly
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Check
|
|
run: |
|
|
goreleaser check -f ./test/.goreleaser.yml
|
|
goreleaser --version
|
|
goreleaser --version | grep nightly
|