73 lines
2.3 KiB
YAML
73 lines
2.3 KiB
YAML
name: electron-linux-amd64
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
tags: [ 'v*' ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
electron-linux-amd64:
|
|
runs-on: amd64-native
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Linux packages for electron build
|
|
run: |
|
|
set -eu
|
|
apt-get update
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
build-essential curl git python3 python3-pip xz-utils libgtk-3-0 libnotify4 libnss3 libxss1 libasound2 libatk1.0-0 libatk-bridge2.0-0 libglib2.0-0 libx11-6 libgdk-pixbuf2.0-0 libpango-1.0-0 libxrandr2 libxinerama1 libxcursor1 libxi6 libfontconfig1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: Install npm dependencies
|
|
run: |
|
|
set -eu
|
|
npm ci
|
|
|
|
- name: Build AppImage (amd64)
|
|
run: |
|
|
set -eu
|
|
npm run build:linux:amd64
|
|
|
|
- name: Collect single consumer artifact (no-FUSE compatible)
|
|
run: |
|
|
set -eu
|
|
rm -rf artifacts
|
|
mkdir -p artifacts
|
|
appimage=$(find dist -maxdepth 1 -type f -name '*.AppImage' | head -n 1 || true)
|
|
[ -n "$appimage" ] || { echo 'AppImage missing'; exit 1; }
|
|
out="artifacts/electron_tray_demo-linux-amd64-run${{ github.run_number }}.AppImage"
|
|
cat > "$out" <<'SH'
|
|
#!/usr/bin/env sh
|
|
set -eu
|
|
self="$0"
|
|
workdir="$(mktemp -d)"
|
|
cleanup() { rm -rf "$workdir"; }
|
|
trap cleanup EXIT INT TERM
|
|
payload="$workdir/app.AppImage"
|
|
awk 'found { print } /^__APPIMAGE_PAYLOAD_BELOW__$/ { found=1; next }' "$self" | base64 -d > "$payload"
|
|
chmod +x "$payload"
|
|
APPIMAGE_EXTRACT_AND_RUN=1 "$payload" "$@"
|
|
exit $?
|
|
__APPIMAGE_PAYLOAD_BELOW__
|
|
SH
|
|
# remove YAML indentation from embedded launcher script
|
|
sed -i 's/^ //' "$out"
|
|
base64 -w 0 "$appimage" >> "$out"
|
|
echo >> "$out"
|
|
chmod +x "$out"
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: electron_tray_demo-linux-amd64-run${{ github.run_number }}
|
|
path: artifacts/
|
|
retention-days: 14
|