@@ -326,35 +326,17 @@ jobs:
326326 permissions :
327327 contents : write
328328 timeout-minutes : 60
329- strategy :
330- fail-fast : false
331- matrix :
332- platform : [ ubuntu-22.04]
333-
334- runs-on : ${{ matrix.platform }}
329+ runs-on : ubuntu-22.04
335330 steps :
336331 - uses : actions/checkout@v4
337332 - name : get Git Tag
333+ shell : bash
338334 run : echo "GIT_TAG_NAME=prod-app-v$(node -p "require('./package.json').version")" >> $GITHUB_ENV
339335 - name : setup node
340336 uses : actions/setup-node@v4
341337 with :
342338 node-version : 24
343339
344- - name : GLIBC version
345- run : |
346- ldd --version
347- - name : install Rust stable
348- uses : dtolnay/rust-toolchain@stable
349- with :
350- toolchain : 1.85.1
351- - name : install dependencies (ubuntu only)
352- run : |
353- sudo apt-get update
354- sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev
355- sudo apt-get install -y libwebrtc-audio-processing-dev
356- sudo apt-get install -y libunwind-dev
357- sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
358340 - name : install frontend dependencies
359341 env :
360342 GH_TOKEN : ${{ github.token }}
@@ -363,27 +345,44 @@ jobs:
363345 run : |
364346 npm ci
365347 npm run _ci-release:prod
366- npm run tauri build
367- ls -alh ./src-tauri/target/release
368- mkdir ./src-tauri/target/release/binDist
369- cp ./src-tauri/target/release/phoenix-code ./src-tauri/target/release/binDist
370- cp ./src-build/linux/install-readme.txt ./src-tauri/target/release/binDist/readme.txt
371- cp ./src-tauri/target/release/phnode ./src-tauri/target/release/binDist
372- cp -r ./src-tauri/target/release/src-node ./src-tauri/target/release/binDist
373- ls -alh ./src-tauri/target/release/binDist
374- mv ./src-tauri/target/release/phoenix-code ./src-tauri/target/release/phoenix-code-backup
375- mv ./src-tauri/target/release/binDist ./src-tauri/target/release/phoenix-code
376- tar -cvzf phoenix-code.tar.gz -C ./src-tauri/target/release phoenix-code
377- ls -alh phoenix-code.tar.gz
378- GLIBC_VER=$(ldd --version | head -n1 | awk '{print $NF}')
379- OUTPUT_FILENAME="phoenix-code_$(node -p "require('./package.json').version")_amd64_linux_bin-GLIBC-${GLIBC_VER}.tar.gz"
380- mv phoenix-code.tar.gz "$OUTPUT_FILENAME"
381- echo "OUTPUT_FILENAME=$OUTPUT_FILENAME" >> $GITHUB_ENV
382- ls
348+ npm run _ci-releaseElectronApp
349+ ls -alh ./src-electron/dist/
350+ echo "OUTPUT_FILENAME=$(ls ./src-electron/dist/*.AppImage | head -1 | xargs basename)" >> $GITHUB_ENV
351+
352+ - name : Sign AppImage with minisign
353+ env :
354+ TAURI_PRIVATE_KEY : ${{ secrets.TAURI_PRIVATE_KEY }}
355+ TAURI_KEY_PASSWORD : ${{ secrets.TAURI_KEY_PASSWORD }}
356+ run : |
357+ # Download and install minisign
358+ wget https://github.com/jedisct1/minisign/releases/download/0.11/minisign-0.11-linux.tar.gz
359+ tar -xzf minisign-0.11-linux.tar.gz
360+ sudo mv minisign-linux/x86_64/minisign /usr/local/bin/
361+ minisign -v
362+
363+ # Write private key to temp file
364+ echo "$TAURI_PRIVATE_KEY" > /tmp/tauri_private.key
365+
366+ # Sign the AppImage
367+ APPIMAGE_PATH="./src-electron/dist/${{ env.OUTPUT_FILENAME }}"
368+ echo "$TAURI_KEY_PASSWORD" | minisign -S -s /tmp/tauri_private.key -m "$APPIMAGE_PATH" -t "$(date +%s) file:${{ env.OUTPUT_FILENAME }}"
369+
370+ # Clean up private key
371+ rm /tmp/tauri_private.key
372+
373+ # Show signature file
374+ echo "Signature file contents:"
375+ cat "${APPIMAGE_PATH}.minisig"
376+
377+ # Rename .minisig to .sig for consistency
378+ mv "${APPIMAGE_PATH}.minisig" "${APPIMAGE_PATH}.sig"
379+
383380 - name : Upload Release Asset
384381 uses : softprops/action-gh-release@v2
385382 with :
386- files : ${{ env.OUTPUT_FILENAME }}
383+ files : |
384+ ./src-electron/dist/${{ env.OUTPUT_FILENAME }}
385+ ./src-electron/dist/${{ env.OUTPUT_FILENAME }}.sig
387386 tag_name : ${{ env.GIT_TAG_NAME }}
388387 draft : true
389388 env :
0 commit comments