aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows/semifold-ci.yaml
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2026-01-18 16:17:50 +0800
committer苏向夜 <fu050409@163.com>2026-01-18 16:17:50 +0800
commitc659689bc0052a5acdf0e5c80286e8bcb1d43302 (patch)
tree6aa72445a9b5e63c0402588401068d0b2d81c1c3 /.github/workflows/semifold-ci.yaml
parent30a7da9eb1734e19bdb98083bdaae757e0ce9b3a (diff)
downloadDropOut-c659689bc0052a5acdf0e5c80286e8bcb1d43302.tar.gz
DropOut-c659689bc0052a5acdf0e5c80286e8bcb1d43302.zip
chore(ci): setup semifold
Diffstat (limited to '.github/workflows/semifold-ci.yaml')
-rw-r--r--.github/workflows/semifold-ci.yaml151
1 files changed, 151 insertions, 0 deletions
diff --git a/.github/workflows/semifold-ci.yaml b/.github/workflows/semifold-ci.yaml
new file mode 100644
index 0000000..ad84bbb
--- /dev/null
+++ b/.github/workflows/semifold-ci.yaml
@@ -0,0 +1,151 @@
+name: Semifold CI
+on:
+ push:
+ branches: [main]
+
+env:
+ CLICOLOR_FORCE: 1
+
+permissions:
+ id-token: write
+ contents: write
+ pull-requests: write
+
+jobs:
+ build-tauri:
+ name: Build on ${{ matrix.name }}
+ 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@v6
+
+ - 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: latest
+
+ - name: Install Node.js
+ uses: actions/setup-node@v6
+ 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:
+ 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
+
+ - name: List Files
+ run: ls -l src-tauri/target/release
+
+ release:
+ name: Release
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+ - name: Setup Semifold
+ uses: noctisynth/setup-semifold@main
+ - name: Semifold CI
+ run: semifold ci
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
+ NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}