diff options
| author | 2026-01-18 16:17:50 +0800 | |
|---|---|---|
| committer | 2026-01-18 16:17:50 +0800 | |
| commit | c659689bc0052a5acdf0e5c80286e8bcb1d43302 (patch) | |
| tree | 6aa72445a9b5e63c0402588401068d0b2d81c1c3 /.github/workflows/semifold-ci.yaml | |
| parent | 30a7da9eb1734e19bdb98083bdaae757e0ce9b3a (diff) | |
| download | DropOut-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.yaml | 151 |
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 }} |