mirror of
https://github.com/Horizontal42/summarum.git
synced 2026-11-11 01:02:01 +03:00
121 lines
4.4 KiB
YAML
121 lines
4.4 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*.*.*"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
# tauri-action's find-or-create-release check races across parallel
|
|
# matrix jobs and can create two separate release objects for the
|
|
# same tag, each missing the other's assets — force serial builds.
|
|
# Every platform added below shares that release object, so they all
|
|
# have to stay in this one serialized matrix.
|
|
max-parallel: 1
|
|
matrix:
|
|
include:
|
|
- os: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
arch: x64
|
|
- os: windows-latest
|
|
target: aarch64-pc-windows-msvc
|
|
arch: arm64
|
|
# 22.04 is the oldest runner with webkit2gtk-4.1 (what Tauri 2
|
|
# needs); building on it keeps the glibc floor as low as possible
|
|
- os: ubuntu-22.04
|
|
target: x86_64-unknown-linux-gnu
|
|
arch: x64
|
|
- os: macos-latest
|
|
target: aarch64-apple-darwin
|
|
arch: arm64
|
|
- os: macos-latest
|
|
target: x86_64-apple-darwin
|
|
arch: x64
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y build-essential curl wget file \
|
|
libwebkit2gtk-4.1-dev librsvg2-dev libssl-dev libxdo-dev \
|
|
libayatana-appindicator3-dev patchelf
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: ${{ matrix.target }}
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: src-tauri
|
|
key: ${{ matrix.target }}
|
|
|
|
- run: npm ci
|
|
|
|
# TAURI_SIGNING_* below is the updater's minisign keypair, not OS code
|
|
# signing — there is no Apple certificate, so macOS builds are only
|
|
# ad-hoc signed (bundle.macOS.signingIdentity "-") and Gatekeeper still
|
|
# asks the user to allow them on first launch.
|
|
#
|
|
# RELEASE_TOKEN (fine-grained PAT, Contents: read/write) stands in for
|
|
# the built-in GITHUB_TOKEN: the Actions-native token started getting
|
|
# "Resource not accessible by integration" on release creation for this
|
|
# repo — confirmed not a permissions:/repo-settings/tag-protection issue,
|
|
# a personal token hits the same Releases API fine.
|
|
- uses: tauri-apps/tauri-action@v0
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
|
with:
|
|
tagName: ${{ github.ref_name }}
|
|
releaseName: "Summarum ${{ github.ref_name }}"
|
|
releaseDraft: true
|
|
prerelease: false
|
|
args: --target ${{ matrix.target }}
|
|
|
|
notes:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- env:
|
|
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
run: |
|
|
prev=$(git tag --sort=-v:refname | grep -v "^${{ github.ref_name }}$" | head -1)
|
|
# release-checklist version bumps (bump version to X / bump cargo
|
|
# version to X / update tauri.conf version to X / sync Cargo.lock
|
|
# or package-lock.json with X) are internal bookkeeping, not
|
|
# user-facing changes — never worth a changelog line.
|
|
noise='^- (bump( cargo)? version to|update tauri\.conf version to|sync (Cargo\.lock|package-lock\.json) with) [0-9]+\.[0-9]+\.[0-9]+$'
|
|
filter() {
|
|
grep -vE "$noise" \
|
|
| sed -E 's/ \(#[0-9]+\)$//' \
|
|
| perl -CSD -pe 's/^- \p{Emoji_Presentation}\x{FE0F}?\s*/- /'
|
|
}
|
|
{
|
|
echo "## What's new"
|
|
if [ -n "$prev" ]; then
|
|
git log "$prev..${{ github.ref_name }}" --pretty=format:"- %s" --no-merges | filter
|
|
echo ""
|
|
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/$prev...${{ github.ref_name }}"
|
|
else
|
|
git log "${{ github.ref_name }}" --pretty=format:"- %s" --no-merges | filter
|
|
fi
|
|
} > notes.md
|
|
gh release edit "${{ github.ref_name }}" --notes-file notes.md --draft=false
|