Some checks failed
Auto Tag / auto-tag (push) Successful in 4s
Test / rust-fmt-check (push) Successful in 57s
Release / build-macos-arm64 (push) Successful in 2m43s
Test / rust-clippy (push) Successful in 7m17s
Test / rust-tests (push) Successful in 8m10s
Test / frontend-typecheck (push) Successful in 1m25s
Test / frontend-tests (push) Successful in 1m20s
Release / build-linux-amd64 (push) Successful in 16m2s
Release / build-windows-amd64 (push) Successful in 13m17s
Release / build-linux-arm64 (push) Has been cancelled
- globals.css: add button reset with -webkit-appearance: none and -webkit-text-fill-color: currentColor so SelectTrigger text is visible on macOS WebKit without breaking Tailwind text-* variant overrides - release.yml: build .app only first, ad-hoc sign it, then create DMG via hdiutil so the signed .app is inside the DMG (previously codesign ran after Tauri already sealed the unsigned .app into the DMG)
191 lines
8.5 KiB
YAML
191 lines
8.5 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
jobs:
|
|
build-linux-amd64:
|
|
runs-on: linux-amd64
|
|
container:
|
|
image: rust:1.88-slim
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
apt-get update -qq && apt-get install -y -qq git
|
|
git init
|
|
git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git
|
|
git fetch --depth=1 origin $GITHUB_SHA
|
|
git checkout FETCH_HEAD
|
|
- name: Install dependencies
|
|
run: |
|
|
apt-get update -qq && apt-get install -y -qq \
|
|
libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev \
|
|
libayatana-appindicator3-dev librsvg2-dev patchelf \
|
|
pkg-config curl perl
|
|
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
|
apt-get install -y nodejs
|
|
- name: Build
|
|
run: |
|
|
npm ci --legacy-peer-deps
|
|
rustup target add x86_64-unknown-linux-gnu
|
|
cargo install tauri-cli --version "^2" --locked
|
|
CI=true cargo tauri build --target x86_64-unknown-linux-gnu
|
|
- name: Upload artifacts
|
|
env:
|
|
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
run: |
|
|
API="http://172.0.0.29:3000/api/v1/repos/$GITHUB_REPOSITORY"
|
|
TAG="$GITHUB_REF_NAME"
|
|
# Create release (idempotent)
|
|
curl -sf -X POST "$API/releases" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"$TAG\",\"name\":\"TFTSR $TAG\",\"body\":\"Release $TAG\",\"draft\":false}" || true
|
|
RELEASE_ID=$(curl -sf "$API/releases/tags/$TAG" \
|
|
-H "Authorization: token $RELEASE_TOKEN" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
|
echo "Release ID: $RELEASE_ID"
|
|
find src-tauri/target/x86_64-unknown-linux-gnu/release/bundle \
|
|
\( -name "*.deb" -o -name "*.rpm" -o -name "*.AppImage" \) | while read f; do
|
|
curl -sf -X POST "$API/releases/$RELEASE_ID/assets" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-F "attachment=@$f;filename=$(basename $f)" && echo "Uploaded $(basename $f)" || echo "Upload failed: $f"
|
|
done
|
|
|
|
build-windows-amd64:
|
|
runs-on: linux-amd64
|
|
container:
|
|
image: rust:1.88-slim
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
apt-get update -qq && apt-get install -y -qq git
|
|
git init
|
|
git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git
|
|
git fetch --depth=1 origin $GITHUB_SHA
|
|
git checkout FETCH_HEAD
|
|
- name: Install dependencies
|
|
run: |
|
|
apt-get update -qq && apt-get install -y -qq mingw-w64 curl nsis perl make
|
|
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
|
apt-get install -y nodejs
|
|
- name: Build
|
|
env:
|
|
CC_x86_64_pc_windows_gnu: x86_64-w64-mingw32-gcc
|
|
CXX_x86_64_pc_windows_gnu: x86_64-w64-mingw32-g++
|
|
AR_x86_64_pc_windows_gnu: x86_64-w64-mingw32-ar
|
|
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER: x86_64-w64-mingw32-gcc
|
|
run: |
|
|
npm ci --legacy-peer-deps
|
|
rustup target add x86_64-pc-windows-gnu
|
|
cargo install tauri-cli --version "^2" --locked
|
|
CI=true cargo tauri build --target x86_64-pc-windows-gnu
|
|
- name: Upload artifacts
|
|
env:
|
|
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
run: |
|
|
API="http://172.0.0.29:3000/api/v1/repos/$GITHUB_REPOSITORY"
|
|
TAG="$GITHUB_REF_NAME"
|
|
curl -sf -X POST "$API/releases" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"$TAG\",\"name\":\"TFTSR $TAG\",\"body\":\"Release $TAG\",\"draft\":false}" || true
|
|
RELEASE_ID=$(curl -sf "$API/releases/tags/$TAG" \
|
|
-H "Authorization: token $RELEASE_TOKEN" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
|
find src-tauri/target/x86_64-pc-windows-gnu/release/bundle \
|
|
\( -name "*.exe" -o -name "*.msi" \) 2>/dev/null | while read f; do
|
|
curl -sf -X POST "$API/releases/$RELEASE_ID/assets" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-F "attachment=@$f;filename=$(basename $f)" && echo "Uploaded $(basename $f)" || echo "Upload failed: $f"
|
|
done
|
|
|
|
build-macos-arm64:
|
|
runs-on: macos-arm64
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
git init
|
|
git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git
|
|
git fetch --depth=1 origin $GITHUB_SHA
|
|
git checkout FETCH_HEAD
|
|
- name: Build
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: "11.0"
|
|
run: |
|
|
npm ci --legacy-peer-deps
|
|
rustup target add aarch64-apple-darwin
|
|
cargo install tauri-cli --version "^2" --locked
|
|
# Build the .app bundle only (no DMG yet so we can sign before packaging)
|
|
CI=true cargo tauri build --target aarch64-apple-darwin --bundles app
|
|
APP=src-tauri/target/aarch64-apple-darwin/release/bundle/macos/TFTSR.app
|
|
# Ad-hoc sign: changes Gatekeeper error from "damaged" to "unidentified developer"
|
|
codesign --deep --force --sign - "$APP"
|
|
# Create DMG from the signed .app
|
|
mkdir -p src-tauri/target/aarch64-apple-darwin/release/bundle/dmg
|
|
DMG=src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/TFTSR.dmg
|
|
hdiutil create -volname "TFTSR" -srcfolder "$APP" -ov -format UDZO "$DMG"
|
|
- name: Upload artifacts
|
|
env:
|
|
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
run: |
|
|
API="http://172.0.0.29:3000/api/v1/repos/$GITHUB_REPOSITORY"
|
|
TAG="$GITHUB_REF_NAME"
|
|
curl -sf -X POST "$API/releases" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"$TAG\",\"name\":\"TFTSR $TAG\",\"body\":\"Release $TAG\",\"draft\":false}" || true
|
|
RELEASE_ID=$(curl -sf "$API/releases/tags/$TAG" \
|
|
-H "Authorization: token $RELEASE_TOKEN" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
|
echo "Release ID: $RELEASE_ID"
|
|
find src-tauri/target/aarch64-apple-darwin/release/bundle -name "*.dmg" | while read f; do
|
|
curl -sf -X POST "$API/releases/$RELEASE_ID/assets" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-F "attachment=@$f;filename=$(basename $f)" && echo "Uploaded $(basename $f)" || echo "Upload failed: $f"
|
|
done
|
|
|
|
build-linux-arm64:
|
|
runs-on: linux-arm64
|
|
container:
|
|
image: rust:1.88-slim
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
apt-get update -qq && apt-get install -y -qq git
|
|
git init
|
|
git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git
|
|
git fetch --depth=1 origin $GITHUB_SHA
|
|
git checkout FETCH_HEAD
|
|
- name: Install dependencies
|
|
run: |
|
|
apt-get update -qq && apt-get install -y -qq \
|
|
libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev \
|
|
libayatana-appindicator3-dev librsvg2-dev patchelf \
|
|
pkg-config curl perl
|
|
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
|
apt-get install -y nodejs
|
|
- name: Build
|
|
run: |
|
|
npm ci --legacy-peer-deps
|
|
rustup target add aarch64-unknown-linux-gnu
|
|
cargo install tauri-cli --version "^2" --locked
|
|
CI=true cargo tauri build --target aarch64-unknown-linux-gnu
|
|
- name: Upload artifacts
|
|
env:
|
|
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
run: |
|
|
API="http://172.0.0.29:3000/api/v1/repos/$GITHUB_REPOSITORY"
|
|
TAG="$GITHUB_REF_NAME"
|
|
curl -sf -X POST "$API/releases" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"$TAG\",\"name\":\"TFTSR $TAG\",\"body\":\"Release $TAG\",\"draft\":false}" || true
|
|
RELEASE_ID=$(curl -sf "$API/releases/tags/$TAG" \
|
|
-H "Authorization: token $RELEASE_TOKEN" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
|
find src-tauri/target/aarch64-unknown-linux-gnu/release/bundle \
|
|
\( -name "*.deb" -o -name "*.rpm" -o -name "*.AppImage" \) | while read f; do
|
|
curl -sf -X POST "$API/releases/$RELEASE_ID/assets" \
|
|
-H "Authorization: token $RELEASE_TOKEN" \
|
|
-F "attachment=@$f;filename=$(basename $f)" && echo "Uploaded $(basename $f)" || echo "Upload failed: $f"
|
|
done
|