Skip to content

Build App

Build App #27

Workflow file for this run

name: Build App
on:
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.16.0'
- name: Install dependencies
run: |
yarn config set registry https://registry.npmmirror.com
yarn install --frozen-lockfile
- name: Build webpack
run: yarn build
- name: Package app
run: yarn package
- name: Get version
id: get_version
run: |
VERSION=$(node -p "require('./package.json').version")
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Verify and package artifacts
run: |
set -euo pipefail
APPIMAGE=$(find dist -maxdepth 1 -type f -name '*.AppImage' | head -n 1)
if [ -z "${APPIMAGE}" ]; then
echo "AppImage not found"
exit 1
fi
chmod +x "${APPIMAGE}"
"${APPIMAGE}" --appimage-extract >/dev/null
set +e
APPDIR="$PWD/squashfs-root" timeout 20s xvfb-run -a ./squashfs-root/AppRun --no-sandbox --disable-gpu >/tmp/futuredrive-smoke.log 2>&1
SMOKE_STATUS=$?
set -e
if [ "${SMOKE_STATUS}" -ne 0 ] && [ "${SMOKE_STATUS}" -ne 124 ]; then
cat /tmp/futuredrive-smoke.log
exit "${SMOKE_STATUS}"
fi
rm -rf squashfs-root
mkdir -p packaged
cp "${APPIMAGE}" "packaged/FutureDrive-Linux-${VERSION}.AppImage"
sha256sum "packaged/FutureDrive-Linux-${VERSION}.AppImage" > "packaged/FutureDrive-Linux-${VERSION}.AppImage.sha256"
(
cd packaged
zip -0 -T "FutureDrive-Linux-${VERSION}.zip" "FutureDrive-Linux-${VERSION}.AppImage" "FutureDrive-Linux-${VERSION}.AppImage.sha256"
)
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: FutureDrive-Linux-${{ env.VERSION }}
path: |
packaged/FutureDrive-Linux-${{ env.VERSION }}.zip
packaged/FutureDrive-Linux-${{ env.VERSION }}.AppImage
packaged/FutureDrive-Linux-${{ env.VERSION }}.AppImage.sha256
if-no-files-found: error
compression-level: 0
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ env.VERSION }}
name: Release v${{ env.VERSION }}
draft: false
prerelease: false
files: |
packaged/FutureDrive-Linux-${{ env.VERSION }}.zip
packaged/FutureDrive-Linux-${{ env.VERSION }}.AppImage
packaged/FutureDrive-Linux-${{ env.VERSION }}.AppImage.sha256
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}