mirror of
https://github.com/garethgeorge/backrest.git
synced 2026-05-30 00:10:54 +00:00
110 lines
2.8 KiB
YAML
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/*
|