Skip to content

Commit e9313ce

Browse files
committed
ci: prod and staging release, minisign not present in ubuntu
1 parent 99077bf commit e9313ce

File tree

3 files changed

+79
-76
lines changed

3 files changed

+79
-76
lines changed

.github/workflows/tauri-build-dev.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,11 @@ jobs:
305305
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
306306
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
307307
run: |
308-
# Install minisign
309-
sudo apt-get update && sudo apt-get install -y minisign
308+
# Download and install minisign
309+
wget https://github.com/jedisct1/minisign/releases/download/0.11/minisign-0.11-linux.tar.gz
310+
tar -xzf minisign-0.11-linux.tar.gz
311+
sudo mv minisign-linux/x86_64/minisign /usr/local/bin/
312+
minisign -v
310313
311314
# Write private key to temp file
312315
echo "$TAURI_PRIVATE_KEY" > /tmp/tauri_private.key

.github/workflows/tauri-build-prod.yml

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -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:

.github/workflows/tauri-build-staging.yml

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -277,35 +277,17 @@ jobs:
277277
permissions:
278278
contents: write
279279
timeout-minutes: 60
280-
strategy:
281-
fail-fast: false
282-
matrix:
283-
platform: [ ubuntu-22.04]
284-
285-
runs-on: ${{ matrix.platform }}
280+
runs-on: ubuntu-22.04
286281
steps:
287282
- uses: actions/checkout@v4
288283
- name: get Git Tag
284+
shell: bash
289285
run: echo "GIT_TAG_NAME=staging-app-v$(node -p "require('./package.json').version")" >> $GITHUB_ENV
290286
- name: setup node
291287
uses: actions/setup-node@v4
292288
with:
293289
node-version: 24
294290

295-
- name: GLIBC version
296-
run: |
297-
ldd --version
298-
- name: install Rust stable
299-
uses: dtolnay/rust-toolchain@stable
300-
with:
301-
toolchain: 1.85.1
302-
- name: install dependencies (ubuntu only)
303-
run: |
304-
sudo apt-get update
305-
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev
306-
sudo apt-get install -y libwebrtc-audio-processing-dev
307-
sudo apt-get install -y libunwind-dev
308-
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
309291
- name: install frontend dependencies
310292
env:
311293
GH_TOKEN: ${{ github.token }}
@@ -314,25 +296,44 @@ jobs:
314296
run: |
315297
npm ci
316298
npm run _ci-release:staging
317-
npm run tauri build
318-
ls -alh ./src-tauri/target/release
319-
mkdir ./src-tauri/target/release/phoenix-code
320-
cp ./src-tauri/target/release/phoenix-code-pre-release ./src-tauri/target/release/phoenix-code
321-
cp ./src-build/linux/install-readme.txt ./src-tauri/target/release/phoenix-code/readme.txt
322-
cp ./src-tauri/target/release/phnode ./src-tauri/target/release/phoenix-code
323-
cp -r ./src-tauri/target/release/src-node ./src-tauri/target/release/phoenix-code
324-
ls -alh ./src-tauri/target/release/phoenix-code
325-
tar -cvzf phoenix-code.tar.gz -C ./src-tauri/target/release phoenix-code
326-
ls -alh phoenix-code.tar.gz
327-
GLIBC_VER=$(ldd --version | head -n1 | awk '{print $NF}')
328-
OUTPUT_FILENAME="phoenix-code-pre-release_$(node -p "require('./package.json').version")_amd64_linux_bin-GLIBC-${GLIBC_VER}.tar.gz"
329-
mv phoenix-code.tar.gz "$OUTPUT_FILENAME"
330-
echo "OUTPUT_FILENAME=$OUTPUT_FILENAME" >> $GITHUB_ENV
331-
ls
299+
npm run _ci-releaseElectronApp
300+
ls -alh ./src-electron/dist/
301+
echo "OUTPUT_FILENAME=$(ls ./src-electron/dist/*.AppImage | head -1 | xargs basename)" >> $GITHUB_ENV
302+
303+
- name: Sign AppImage with minisign
304+
env:
305+
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
306+
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
307+
run: |
308+
# Download and install minisign
309+
wget https://github.com/jedisct1/minisign/releases/download/0.11/minisign-0.11-linux.tar.gz
310+
tar -xzf minisign-0.11-linux.tar.gz
311+
sudo mv minisign-linux/x86_64/minisign /usr/local/bin/
312+
minisign -v
313+
314+
# Write private key to temp file
315+
echo "$TAURI_PRIVATE_KEY" > /tmp/tauri_private.key
316+
317+
# Sign the AppImage
318+
APPIMAGE_PATH="./src-electron/dist/${{ env.OUTPUT_FILENAME }}"
319+
echo "$TAURI_KEY_PASSWORD" | minisign -S -s /tmp/tauri_private.key -m "$APPIMAGE_PATH" -t "$(date +%s) file:${{ env.OUTPUT_FILENAME }}"
320+
321+
# Clean up private key
322+
rm /tmp/tauri_private.key
323+
324+
# Show signature file
325+
echo "Signature file contents:"
326+
cat "${APPIMAGE_PATH}.minisig"
327+
328+
# Rename .minisig to .sig for consistency
329+
mv "${APPIMAGE_PATH}.minisig" "${APPIMAGE_PATH}.sig"
330+
332331
- name: Upload Release Asset
333332
uses: softprops/action-gh-release@v2
334333
with:
335-
files: ${{ env.OUTPUT_FILENAME }}
334+
files: |
335+
./src-electron/dist/${{ env.OUTPUT_FILENAME }}
336+
./src-electron/dist/${{ env.OUTPUT_FILENAME }}.sig
336337
tag_name: ${{ env.GIT_TAG_NAME }}
337338
draft: true
338339
env:

0 commit comments

Comments
 (0)