Skip to content

Linux (x86_64, aarch64) Nightly Build #9

Linux (x86_64, aarch64) Nightly Build

Linux (x86_64, aarch64) Nightly Build #9

Workflow file for this run

name: Linux (x86_64, aarch64) Nightly Build
on:
workflow_dispatch: # Allows manual triggering
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build Linux Packages
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu]
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
cache: 'npm'
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Add Target
run: rustup target add ${{ matrix.target }}
- name: Install Cross-Compilation Tools
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
sudo dpkg --add-architecture arm64
# Add ARM64 repositories
sudo tee /etc/apt/sources.list.d/arm64.list << EOF
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy main restricted
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-updates main restricted
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports jammy-security main restricted
EOF
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
# Install ARM64 versions of GTK and related dependencies
sudo apt-get install -y \
libgtk-3-dev:arm64 \
libayatana-appindicator3-dev:arm64 \
librsvg2-dev:arm64 \
libglib2.0-dev:arm64 \
libjavascriptcoregtk-4.0-dev:arm64 \
libsoup-3.0-dev:arm64 \
libwebkit2gtk-4.1-dev:arm64
- name: Configure Cross-Compilation Environment
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV
echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV
echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV
# Use regular pkg-config instead of the arm64-specific one
echo "PKG_CONFIG=pkg-config" >> $GITHUB_ENV
- name: Install Linux Dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
pkg-config \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libglib2.0-dev \
libjavascriptcoregtk-4.0-dev \
libsoup-3.0-dev \
libwebkit2gtk-4.1-dev
- name: Install Dependencies
run: |
npm install
- name: Build Frontend
run: npm run build
- name: Build AppImage (${{ matrix.target }})
run: |
echo "Building AppImage for ${{ matrix.target }}..."
npm run tauri build -- --target ${{ matrix.target }} --bundles appimage
- name: Build Debian Package (${{ matrix.target }})
run: |
echo "Building Debian package for ${{ matrix.target }}..."
npm run tauri build -- --target ${{ matrix.target }} --bundles deb
- name: Upload AppImage
uses: actions/upload-artifact@v4
with:
name: linux-appimage-${{ matrix.target }}
path: src-tauri/target/${{ matrix.target }}/release/bundle/appimage/*.AppImage
- name: Upload Debian Package
uses: actions/upload-artifact@v4
with:
name: linux-deb-${{ matrix.target }}
path: src-tauri/target/${{ matrix.target }}/release/bundle/deb/*.deb
- name: Create Release
if: github.event_name == 'schedule'
uses: softprops/action-gh-release@v1
with:
name: Linux Nightly Build ${{ github.sha }}
tag_name: linux-nightly-${{ github.sha }}
files: |
src-tauri/target/${{ matrix.target }}/release/bundle/appimage/*.AppImage
src-tauri/target/${{ matrix.target }}/release/bundle/deb/*.deb
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}