aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows/release.yml
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2026-01-18 22:13:25 +0800
committerGitHub <noreply@github.com>2026-01-18 22:13:25 +0800
commit53d3d71b69408b5fade60fbc41cee3d8e0946cbe (patch)
treeeb54be440ee6fe7af30ea54cc2f689563dc28ef8 /.github/workflows/release.yml
parent30a7da9eb1734e19bdb98083bdaae757e0ce9b3a (diff)
parent09b2e0f84721587f0b0a59818ebc5720c447ebb8 (diff)
downloadDropOut-53d3d71b69408b5fade60fbc41cee3d8e0946cbe.tar.gz
DropOut-53d3d71b69408b5fade60fbc41cee3d8e0946cbe.zip
Adopt Semifold CI and prepare 0.2.0-alpha pre-release (#62)
Refer: http://semifold.noctisynth.org/ ## Summary by Sourcery Adopt Semifold-based release management and prepare the project for a 0.2.0-alpha pre-release across Rust and UI packages. New Features: - Introduce Semifold CI release workflow to orchestrate builds, publishing, and changelog management. - Add Semifold status workflow to report release status on pull requests. - Add workspace-level Node tooling and scripts to manage Tauri version bumping and project preparation. Enhancements: - Refactor GitHub Actions workflows for build, test, check, and lint to simplify pnpm usage, update action versions, and standardize artifact paths. - Move Rust profile configuration into a new Cargo workspace and add a pnpm workspace for the UI package. - Configure Semifold changelog and release metadata for Rust and Node packages, including alpha pre-release tagging. Build: - Replace the tag-triggered GitHub release workflow with a branch-based Semifold CI pipeline that builds artifacts for Linux, macOS, and Windows and uploads them for publishing. - Update CI action versions (checkout, setup-node, upload-artifact, download-artifact) and adjust Rust cache configuration and artifact locations. - Add root workspace package.json, pnpm-workspace.yaml, and pnpm overrides to centralize tooling and dependency management. CI: - Add a dedicated Semifold status GitHub Actions workflow for pull requests to main. - Update existing check, lint, test, and build workflows to align with the new workspace layout and artifact directories. Deployment: - Integrate Semifold configuration for automated publishing to crates.io and npm, including pre-checks, post-version hooks, and use of stored build artifacts in releases. Tests: - Adjust test workflow artifact paths to match the new target directory structure and workspace configuration. Chores: - Remove unused Python packaging files and old Node lockfiles that are no longer part of the build or release process.
Diffstat (limited to '.github/workflows/release.yml')
-rw-r--r--.github/workflows/release.yml174
1 files changed, 0 insertions, 174 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index 82399e5..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,174 +0,0 @@
-name: Release
-
-on:
- push:
- tags:
- - "v*"
- workflow_dispatch:
- inputs:
- tag_name:
- description: "Tag name to release (e.g., v1.0.0)"
- required: true
- default: "v1.0.0"
-
-env:
- CARGO_TERM_COLOR: always
-
-permissions:
- contents: write
-
-jobs:
- promote-release:
- name: Create Release & Changelog
- permissions:
- contents: write
- runs-on: ubuntu-latest
- outputs:
- release_id: ${{ steps.create_release.outputs.id }}
- release_body: ${{ steps.changelog.outputs.changes }}
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Generate CHANGELOG
- id: changelog
- uses: requarks/changelog-action@v1
- with:
- token: ${{ github.token }}
- tag: ${{ github.event_name == 'workflow_dispatch' && inputs.tag_name || github.ref_name }}
- changelogFilePath: CHANGELOG.md
- includeInvalidCommits: true
- useGitmojis: false
-
- - name: Create Release
- id: create_release
- uses: softprops/action-gh-release@v1
- with:
- tag_name: ${{ github.event_name == 'workflow_dispatch' && inputs.tag_name || github.ref_name }}
- name: "DropOut ${{ github.event_name == 'workflow_dispatch' && inputs.tag_name || github.ref_name }}"
- body: ${{ steps.changelog.outputs.changes }}
- draft: true
- prerelease: false
-
- build-tauri:
- name: Build & Upload (${{ matrix.name }})
- needs: promote-release
- permissions:
- contents: write
- strategy:
- fail-fast: false
- matrix:
- include:
- - platform: "ubuntu-22.04"
- name: "Linux x86_64"
- target: "x86_64-unknown-linux-gnu"
- args: "--target x86_64-unknown-linux-gnu"
- - platform: "ubuntu-24.04-arm"
- name: "Linux ARM64"
- target: "aarch64-unknown-linux-gnu"
- args: "--target aarch64-unknown-linux-gnu"
- - platform: "macos-latest"
- name: "macOS ARM64"
- target: "aarch64-apple-darwin"
- args: "--target aarch64-apple-darwin"
- - platform: "windows-latest"
- name: "Windows x86_64"
- target: "x86_64-pc-windows-msvc"
- args: "--target x86_64-pc-windows-msvc"
- - platform: "windows-11-arm"
- name: "Windows ARM64"
- target: "aarch64-pc-windows-msvc"
- args: "--target aarch64-pc-windows-msvc"
-
- runs-on: ${{ matrix.platform }}
- container:
- image: ${{ matrix.container }}
- options: --user root
- steps:
- - uses: actions/checkout@v4
-
- - name: Install Dependencies (Linux x86_64)
- if: matrix.platform == 'ubuntu-22.04'
- run: |
- sudo apt-get update
- sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libfuse2
-
- - name: Install Dependencies (Linux ARM64)
- if: matrix.platform == 'ubuntu-24.04-arm'
- run: |
- sudo apt-get update
- sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libfuse2
-
- - name: Install pnpm
- uses: pnpm/action-setup@v4
- with:
- version: 9
-
- - name: Install Node.js
- uses: actions/setup-node@v4
- with:
- node-version: 22
- cache: "pnpm"
- cache-dependency-path: "ui/pnpm-lock.yaml"
-
- - name: Install Frontend Dependencies
- run: pnpm install
- working-directory: ui
-
- - name: Install Rust
- uses: dtolnay/rust-toolchain@stable
- with:
- targets: ${{ matrix.target }}
-
- - name: Rust Cache
- uses: swatinem/rust-cache@v2
- with:
- workspaces: "./src-tauri -> target"
- shared-key: ${{ matrix.target }}
-
- - name: Setup appimagetool (Linux)
- if: startsWith(matrix.platform, 'ubuntu') && !startsWith(matrix.platform, 'macos') && !startsWith(matrix.platform, 'windows')
- run: |
- ARCH=$(uname -m)
- wget -q "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${ARCH}.AppImage"
- chmod +x "appimagetool-${ARCH}.AppImage"
- if command -v sudo >/dev/null 2>&1; then
- sudo mv "appimagetool-${ARCH}.AppImage" /usr/local/bin/appimagetool
- else
- mv "appimagetool-${ARCH}.AppImage" /usr/local/bin/appimagetool
- fi
-
- - name: Build Tauri App
- uses: tauri-apps/tauri-action@v0
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- releaseId: ${{ needs.promote-release.outputs.release_id }}
- args: ${{ matrix.args }}
-
- - name: Fix AppImage for Wayland (Linux)
- if: startsWith(matrix.platform, 'ubuntu') && !startsWith(matrix.platform, 'macos') && !startsWith(matrix.platform, 'windows')
- run: |
- # Locate the generated AppImage
- APPIMAGE=$(find bundle -name "*.AppImage" -type f | head -1)
- echo "Found AppImage: $APPIMAGE"
-
- if [ -n "$APPIMAGE" ]; then
- # backup original AppImage
- cp "$APPIMAGE" "${APPIMAGE}.backup"
-
- # extract AppImage
- "$APPIMAGE" --appimage-extract
-
- # Fix GTK hook, remove forced X11
- if [ -f squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh ]; then
- sed -i 's/^export GDK_BACKEND=x11.*$/# export GDK_BACKEND=x11 # Disabled for Wayland compatibility/' squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh
- echo "Successfully patched GTK hook for Wayland compatibility"
- fi
-
- # Repack AppImage
- appimagetool squashfs-root "$APPIMAGE"
- rm -rf squashfs-root
- fi
- working-directory: src-tauri/target/release