Files

133 lines
3.5 KiB
YAML

name: Build Linux Packages
on:
push:
tags:
- "v*"
workflow_dispatch:
env:
TYPST_COMMIT: 9dfd3a08500b7896045f907433cf7b4b02434fad
APPIMAGE_EXTRACT_AND_RUN: 1
NO_STRIP: 1
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
path: typst-desktop
- name: Clone Typst compiler
run: |
git clone https://github.com/typst/typst.git typst-desktop/typst
git -C typst-desktop/typst checkout "$TYPST_COMMIT"
- name: Install build dependencies
run: |
apt-get update
apt-get install -y \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libappindicator3-dev \
librsvg2-dev \
patchelf \
libssl-dev \
pkg-config \
build-essential \
file \
curl \
wget \
jq \
xdg-utils
- name: Set up Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
typst-desktop/src-tauri/target
key: cargo-release-${{ hashFiles('typst-desktop/src-tauri/Cargo.lock') }}
restore-keys: cargo-release-
- name: Install frontend dependencies
working-directory: typst-desktop
run: bun install
- name: Build application
working-directory: typst-desktop
run: bun run tauri build
- name: Collect packages
run: |
mkdir -p packages
find typst-desktop/src-tauri/target/release/bundle \
-type f \( -name "*.deb" -o -name "*.rpm" -o -name "*.AppImage" \) \
-exec cp {} packages/ \;
ls -la packages
- name: Upload packages
uses: actions/upload-artifact@v3
with:
name: typst-desktop-linux-x86_64
path: packages/*
if-no-files-found: error
build-arch:
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
path: typst-desktop
- name: Update pacman and install build dependencies
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm --needed \
git rust bun webkit2gtk-4.1 gtk3 openssl
- name: Create unprivileged build user
run: |
useradd -m builder
chown -R builder:builder "$GITHUB_WORKSPACE"
- name: Set package version from tag
if: startsWith(github.ref, 'refs/tags/v')
working-directory: typst-desktop/packaging/arch
run: sed -i "s/^pkgver=.*/pkgver=${TAG#v}/" PKGBUILD
env:
TAG: ${{ github.ref_name }}
- name: Build package
working-directory: typst-desktop/packaging/arch
run: runuser -u builder -- env TYPST_COMMIT="$TYPST_COMMIT" makepkg --noconfirm
- name: Collect package
run: |
mkdir -p packages
find typst-desktop/packaging/arch -maxdepth 1 -name "*.pkg.tar.zst" -exec cp {} packages/ \;
ls -la packages
- name: Upload package
uses: actions/upload-artifact@v3
with:
name: typst-desktop-arch-x86_64
path: packages/*
if-no-files-found: error