Files
vnidrop/.github/workflows/linux-packages.yml

213 lines
6.1 KiB
YAML

name: Linux packages
on:
pull_request:
paths:
- ".github/workflows/linux-packages.yml"
- "packaging/linux/**"
- "packaging/version/**"
- "version.properties"
- "assets/linux/**"
- "desktopApp/**"
- "shared/**"
- "crates/vnidrop/**"
- "Cargo.toml"
- "Cargo.lock"
- "LICENSE"
- "build.gradle.kts"
- "settings.gradle.kts"
- "gradle.properties"
- "gradle/**"
- "gradlew"
- "Makefile"
- "config.mk"
- "make/**"
workflow_call:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: linux-packages-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
defaults:
run:
shell: bash
jobs:
build-deb:
name: Build Debian package (x64)
runs-on: ubuntu-22.04
timeout-minutes: 90
env:
CARGO_TERM_COLOR: always
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install packaging tools
run: |
sudo apt-get update
sudo apt-get install --yes fakeroot unzip
- name: Set up JDK 21
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "21.0.11+10.0.LTS"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
with:
gradle-home-cache-strict-match: true
- name: Set up Rust 1.91
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # v1
with:
toolchain: "1.91.0"
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: linux-deb-x64-cargo-1.91.0-${{ hashFiles('Cargo.lock') }}
restore-keys: |
linux-deb-x64-cargo-1.91.0-
- name: Resolve canonical version
id: version
run: |
version=$(packaging/linux/resolve-version.sh)
echo "app=$version" >> "$GITHUB_OUTPUT"
- name: Test and build Debian package
run: make package-deb
- name: Upload Debian artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: vnidrop-${{ steps.version.outputs.app }}-linux-deb-x64
path: build/release/linux/deb/
if-no-files-found: error
retention-days: 14
compression-level: 0
- name: Summarize Debian package
run: |
echo "### Debian package" >> "$GITHUB_STEP_SUMMARY"
echo "- Version: ${{ steps.version.outputs.app }}-1" >> "$GITHUB_STEP_SUMMARY"
echo "- Architecture: amd64" >> "$GITHUB_STEP_SUMMARY"
echo "- Build baseline: Ubuntu 22.04" >> "$GITHUB_STEP_SUMMARY"
build-rpm:
name: Build RPM package (x64)
runs-on: ubuntu-24.04
container:
image: registry.fedoraproject.org/fedora:43
volumes:
- /usr/local/lib/android/sdk:/usr/local/lib/android/sdk
timeout-minutes: 90
env:
ANDROID_HOME: /usr/local/lib/android/sdk
ANDROID_SDK_ROOT: /usr/local/lib/android/sdk
CARGO_TERM_COLOR: always
steps:
- name: Install build and packaging tools
run: |
dnf install --assumeyes \
alsa-lib \
cpio \
curl \
cups-libs \
desktop-file-utils \
findutils \
fontconfig \
freetype \
gcc \
gcc-c++ \
git \
gzip \
gtk3 \
libX11 \
libXext \
libXi \
libXrandr \
libXrender \
libXtst \
make \
mesa-libGL \
rpm-build \
tar \
unzip \
which \
xz \
zstd
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Set up JDK 21
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "21.0.11+10.0.LTS"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
with:
gradle-home-cache-strict-match: true
- name: Set up Rust 1.91
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # v1
with:
toolchain: "1.91.0"
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: linux-rpm-x64-cargo-1.91.0-${{ hashFiles('Cargo.lock') }}
restore-keys: |
linux-rpm-x64-cargo-1.91.0-
- name: Resolve canonical version
id: version
run: |
version=$(packaging/linux/resolve-version.sh)
echo "app=$version" >> "$GITHUB_OUTPUT"
- name: Build RPM package
run: make package-rpm
- name: Upload RPM artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: vnidrop-${{ steps.version.outputs.app }}-linux-rpm-x64
path: build/release/linux/rpm/
if-no-files-found: error
retention-days: 14
compression-level: 0
- name: Summarize RPM package
run: |
echo "### RPM package" >> "$GITHUB_STEP_SUMMARY"
echo "- Version: ${{ steps.version.outputs.app }}-1" >> "$GITHUB_STEP_SUMMARY"
echo "- Architecture: x86_64" >> "$GITHUB_STEP_SUMMARY"
echo "- Build environment: Fedora 43" >> "$GITHUB_STEP_SUMMARY"