diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 86e7da2..997a227 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,95 +1,137 @@ name: "publish-stable" on: - push: - branches: - - release + push: + branches: + - release jobs: - publish-tauri: - permissions: - contents: write # Ensure this is present - issues: write # Optional but recommended - pull-requests: write # Optional but recommended - strategy: - fail-fast: false - matrix: - include: - - platform: "macos-latest" # for Arm based macs (M1 and above) - args: "--target aarch64-apple-darwin" - - platform: "macos-latest" # for Intel based macs - args: "--target x86_64-apple-darwin" - - platform: "ubuntu-22.04" - args: "" - - platform: "windows-latest" # Windows x64 - args: "--target x86_64-pc-windows-msvc" - - platform: "windows-latest" # Windows x86 (32-bit) - args: "--target i686-pc-windows-msvc" - - platform: "windows-latest" # Windows ARM64 - args: "--target aarch64-pc-windows-msvc" + publish-tauri: + permissions: + contents: write # Ensure this is present + issues: write # Optional but recommended + pull-requests: write # Optional but recommended + strategy: + fail-fast: false + matrix: + include: + - platform: "macos-latest" # for Arm based macs (M1 and above) + args: "--target aarch64-apple-darwin" + - platform: "macos-latest" # for Intel based macs + args: "--target x86_64-apple-darwin" + - platform: "ubuntu-22.04" + args: "" + - platform: "ubuntu-24.04-arm" + args: "" + - platform: "windows-latest" # Windows x64 + args: "--target x86_64-pc-windows-msvc" + - platform: "windows-latest" # Windows x86 (32-bit) + args: "--target i686-pc-windows-msvc" + - platform: "windows-latest" # Windows ARM64 + args: "--target aarch64-pc-windows-msvc" - runs-on: ${{ matrix.platform }} - steps: - - uses: actions/checkout@v4 + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v4 - - name: setup node - uses: actions/setup-node@v4 - with: - node-version: lts/* + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* - - name: install Rust stable - uses: dtolnay/rust-toolchain@stable - with: - targets: > - ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || - matrix.platform == 'windows-latest' && 'x86_64-pc-windows-msvc,i686-pc-windows-msvc,aarch64-pc-windows-msvc' || '' }} + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: > + ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || + matrix.platform == 'windows-latest' && 'x86_64-pc-windows-msvc,i686-pc-windows-msvc,aarch64-pc-windows-msvc' || '' }} - - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-22.04' || matrix.platform == 'ubuntu-24.04-arm' - run: | - sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libpcsclite-dev libudev-dev libusb-1.0-0-dev + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' || matrix.platform == 'ubuntu-24.04-arm' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libpcsclite-dev libudev-dev libusb-1.0-0-dev - - name: install dependencies (ubuntu-arm64 only) - if: matrix.platform == 'ubuntu-24.04-arm' - run: | - sudo apt-get install xdg-utils + - name: install dependencies (ubuntu-arm64 only) + if: matrix.platform == 'ubuntu-24.04-arm' + run: | + sudo apt-get install xdg-utils - - name: Setup Deno - uses: denoland/setup-deno@v2 - with: - deno-version: v2.x + - name: Setup Deno + uses: denoland/setup-deno@v2 + with: + deno-version: v2.x - - name: install frontend dependencies - run: deno install + - name: install frontend dependencies + run: deno install - - name: Extract version from Cargo.toml - id: get_version - shell: bash - run: | - # Define the path to your Cargo.toml file - cargo_file="src-tauri/Cargo.toml" - # Extract ONLY the version number using a more precise regex - version=$(grep -m 1 '^version' "$cargo_file" | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/') - # Output for debugging - echo "Version found: $version" - # Set the output correctly for GitHub Actions - echo "version=$version" >> $GITHUB_ENV + - name: Extract version from Cargo.toml + id: get_version + shell: bash + run: | + # Define the path to your Cargo.toml file + cargo_file="src-tauri/Cargo.toml" + # Extract ONLY the version number using a more precise regex + version=$(grep -m 1 '^version' "$cargo_file" | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/') + # Output for debugging + echo "Version found: $version" + # Set the output correctly for GitHub Actions + echo "version=$version" >> $GITHUB_ENV - # Step 3: Publish the release with combined release body - - uses: tauri-apps/tauri-action@v0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # This might fix the appimage issue of connecting with the device? No Idea... - LINUXDEPLOY_OUTPUT_APP_IMAGE_EXCLUDE: "libpcsclite.so.1" - with: - tagName: v__VERSION__ - releaseName: "PicoForge(v__VERSION__) ALPHA" - releaseBody: | - # PicoForge app(v__VERSION__) Alpha release. + # Step 3: Publish the release with combined release body + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # This might fix the appimage issue of connecting with the device? No Idea... + LINUXDEPLOY_OUTPUT_APP_IMAGE_EXCLUDE: "libpcsclite.so.1" + with: + tagName: v__VERSION__ + releaseName: "PicoForge(v__VERSION__) ALPHA" + releaseBody: | + > [!CAUTION] + > This is an alpha release and thus can have some bugs, report them using github issues. - ## Caution: - - This is an alpha release and thus can have some bugs. + ### Changelog: - releaseDraft: false - prerelease: false - args: ${{ matrix.args }} \ No newline at end of file + - Now manage stored passkeys on your pico-key from picoforge app itself. + - Add Linux arm builds of the app in releases. + - Fix AppImages not detecting the key. + + releaseDraft: true + prerelease: false + args: ${{ matrix.args }} + + - name: Patch and Overwrite AppImage + if: matrix.platform == 'ubuntu-22.04' || matrix.platform == 'ubuntu-24.04-arm' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # 1. Determine Architecture based on the matrix platform + if [[ "${{ matrix.platform }}" == *"arm"* ]]; then + TOOL_ARCH="aarch64" + else + TOOL_ARCH="x86_64" + fi + + echo "Detected architecture for AppImageTool: $TOOL_ARCH" + + # 2. Download the correct AppImageTool for this architecture + wget -q "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$TOOL_ARCH.AppImage" + chmod +x "appimagetool-$TOOL_ARCH.AppImage" + + # 3. Locate the Tauri-built AppImage + APPIMAGE_PATH=$(find src-tauri/target/release/bundle/appimage -name "*.AppImage" | head -n 1) + echo "Patching local file: $APPIMAGE_PATH" + + # 4. Extract content and remove the conflicting library + "$APPIMAGE_PATH" --appimage-extract > /dev/null + rm -f squashfs-root/usr/lib/libpcsclite.so.1 + + # 5. Repackage using the architecture-specific tool and flag + # We pass ARCH=$TOOL_ARCH so appimagetool knows what header to use + ARCH=$TOOL_ARCH "./appimagetool-$TOOL_ARCH.AppImage" --appimage-extract-and-run squashfs-root/ "$APPIMAGE_PATH" + + # 6. Upload + echo "Overwriting Draft Release asset..." + gh release upload "v${{ env.version }}" "$APPIMAGE_PATH" --clobber + + echo "Success! The Draft Release now has the fixed AppImage."