- Pass TAURI_SIGNING_PRIVATE_KEY env vars from secrets to build step - Generate latest.json with version, pub_date, platform URL, and .sig signature - Upload latest.json alongside .deb and .AppImage as release artifacts
143 lines
3.9 KiB
YAML
143 lines
3.9 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
build-linux:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
libwebkit2gtk-4.1-dev \
|
|
libgtk-3-dev \
|
|
libayatana-appindicator3-dev \
|
|
librsvg2-dev \
|
|
libssl-dev \
|
|
build-essential \
|
|
pkg-config \
|
|
curl \
|
|
wget \
|
|
libfuse2
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: npm
|
|
cache-dependency-path: v2/package-lock.json
|
|
|
|
- name: Setup Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Cache Rust dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
v2/src-tauri/target
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('v2/src-tauri/Cargo.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-cargo-
|
|
|
|
- name: Install npm dependencies
|
|
working-directory: v2
|
|
run: npm ci --legacy-peer-deps
|
|
|
|
- name: Build Tauri app
|
|
working-directory: v2
|
|
env:
|
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
|
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
|
run: npx tauri build
|
|
|
|
- name: List build artifacts
|
|
run: |
|
|
find v2/src-tauri/target/release/bundle -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.sig" \) | head -20
|
|
|
|
- name: Generate updater latest.json
|
|
run: |
|
|
VERSION="${GITHUB_REF_NAME#v}"
|
|
DEB_NAME=$(basename v2/src-tauri/target/release/bundle/deb/*.deb)
|
|
APPIMAGE_NAME=$(basename v2/src-tauri/target/release/bundle/appimage/*.AppImage)
|
|
SIG=""
|
|
if [ -f "v2/src-tauri/target/release/bundle/appimage/${APPIMAGE_NAME}.sig" ]; then
|
|
SIG=$(cat "v2/src-tauri/target/release/bundle/appimage/${APPIMAGE_NAME}.sig")
|
|
fi
|
|
cat > latest.json << EOF
|
|
{
|
|
"version": "${VERSION}",
|
|
"notes": "Release ${VERSION}",
|
|
"pub_date": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
|
"platforms": {
|
|
"linux-x86_64": {
|
|
"signature": "${SIG}",
|
|
"url": "https://github.com/DexterFromLab/BTerminal/releases/download/${GITHUB_REF_NAME}/${APPIMAGE_NAME}"
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
- name: Upload .deb
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: bterminal-deb
|
|
path: v2/src-tauri/target/release/bundle/deb/*.deb
|
|
|
|
- name: Upload AppImage
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: bterminal-appimage
|
|
path: v2/src-tauri/target/release/bundle/appimage/*.AppImage
|
|
|
|
- name: Upload latest.json
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: updater-json
|
|
path: latest.json
|
|
|
|
release:
|
|
needs: build-linux
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Download .deb
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: bterminal-deb
|
|
path: artifacts/
|
|
|
|
- name: Download AppImage
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: bterminal-appimage
|
|
path: artifacts/
|
|
|
|
- name: Download latest.json
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: updater-json
|
|
path: artifacts/
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
generate_release_notes: true
|
|
files: |
|
|
artifacts/*.deb
|
|
artifacts/*.AppImage
|
|
artifacts/latest.json
|