Files
backrest/.github/workflows/reusable-release.yml
2025-09-07 00:12:31 -07:00

110 lines
2.8 KiB
YAML

name: Reusable Release Workflow
on:
workflow_call:
inputs:
snapshot:
description: "Run as a snapshot release"
required: true
type: boolean
secrets:
DOCKERHUB_USERNAME:
required: false
DOCKERHUB_TOKEN:
required: false
HOMEBREW_GITHUB_TOKEN:
required: false
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.24"
- name: Setup NodeJS
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Login to Docker Hub
if: ${{ !inputs.snapshot }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with:
distribution: goreleaser
version: latest
args: ${{ inputs.snapshot && 'release --snapshot --clean' || 'release --clean' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: release-builds
path: |
dist/*.tar.gz
dist/*.zip
installer:
name: Windows installers
needs: [goreleaser]
runs-on: windows-2022
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: release-builds
- name: Unzip artifacts and compile Inno Setup installers
shell: powershell
run: |
mkdir windows_installers
foreach ($arch in "x86_64", "arm64") {
$src = "backrest_Windows_$arch"
Expand-Archive ".\${src}.zip"
cp build\windows\* $src
& "c:\Program Files (x86)\Inno Setup 6\ISCC.exe" /DArch=$arch ${src}\installer.iss
cp "$src\Output\*" windows_installers
}
- name: Upload Installers as Artifacts
if: ${{ inputs.snapshot }}
uses: actions/upload-artifact@v4
with:
name: backrest-snapshot-installers
path: windows_installers\*.exe
- name: Upload Installers to Release
if: ${{ !inputs.snapshot && startsWith(github.ref, 'refs/tags/') }}
uses: softprops/action-gh-release@v2
with:
files: |
./windows_installers/*