mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-07-26 05:46:59 +00:00
ci: refactor and optimize GitHub Actions workflows (#146)
* ci: refactor and optimize GitHub Actions workflows\n\n- **Consolidate build processes (`build.yml`, `release.yml`)**: Merged the standalone `.zip` (linux-build) and `.deb` (deb-build) jobs into a single matrix job (`build-and-package` / `build-release`).
This prevents compiling the Rust binaries twice per architecture, effectively cutting the build time in half and saving CI runner minutes.
- **Parallelize and fix Flatpak deployment (`flatter.yml`)**:
- Converted `x86_64` and `aarch64` flatpak jobs to run concurrently via a matrix strategy, removing the sequential bottleneck.
- Resolved an issue where GitHub Pages would only host the `aarch64` repository. Introduced a new `prepare-repo` job that downloads the `.flatpak` bundles from both architectures, merges them into a
single OSTree repository locally, signs it with GPG, and deploys the unified multi-arch repository to GitHub Pages.
- Configured `flatter.yml` to automatically attach the offline `.flatpak` bundles to GitHub Releases when triggered by a release event.
- **Toolchain and cleanup**: Switched hardcoded Rust toolchain version (`1.96.0`) to `stable` across all workflows to prevent manual bumps in the future. Simplified bash scripts and removed redundant
dependency installation steps.
* Extract Copr trigger into a separate job: Copr build now starts immediately in parallel with GitHub Actions builds, eliminating unnecessary waiting time.
* use ubuntu 22.04 to build binaries instead of ubuntu-latest
* fix cache poisoning
* another attemp to fix cache poisoning
* disable cache in setup-rust-toolchain
* use ubuntu-latest
* optimize dependencies in debug profile
* remove --release flag from build.yml and CARGO env vars
* fix flatter names collision
* better flatter key changing
* auto formatting
* add auto updating cargo-sources for dependabot pull requests
* add groups to dependabot.yml
* add github-actions to dependabot
* add ppa deb repo
* add concurrency: gh-pages-deploy
This commit is contained in:
+13
-68
@@ -12,7 +12,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
linux-build:
|
||||
build-and-package:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
@@ -43,22 +43,19 @@ jobs:
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
toolchain: 1.96.0
|
||||
toolchain: stable
|
||||
cache: false
|
||||
|
||||
- name: Rust Cache
|
||||
uses: swatinem/rust-cache@v2
|
||||
with:
|
||||
prefix-key: "v3-${{ matrix.runner }}"
|
||||
|
||||
- name: Run tests
|
||||
run: cargo test --locked
|
||||
|
||||
- name: Build all binaries (debug-speed compilation into target/release)
|
||||
env:
|
||||
CARGO_PROFILE_RELEASE_OPT_LEVEL: 0
|
||||
CARGO_PROFILE_RELEASE_DEBUG: "true"
|
||||
CARGO_PROFILE_RELEASE_STRIP: "false"
|
||||
CARGO_PROFILE_RELEASE_LTO: "false"
|
||||
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 256
|
||||
run: cargo build --release --locked
|
||||
- name: Build all binaries
|
||||
run: cargo build --locked
|
||||
|
||||
- name: Extract all binary names
|
||||
id: cargo-meta
|
||||
@@ -70,7 +67,7 @@ jobs:
|
||||
echo "$BIN_NAMES" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Package all binaries into one archive
|
||||
- name: Package ZIP archive
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
@@ -81,7 +78,7 @@ jobs:
|
||||
FILES=()
|
||||
while IFS= read -r BIN; do
|
||||
[ -z "$BIN" ] && continue
|
||||
FILES+=("target/release/$BIN")
|
||||
FILES+=("target/debug/$BIN")
|
||||
done <<< "${{ steps.cargo-meta.outputs.bin_names }}"
|
||||
|
||||
if [ "${#FILES[@]}" -eq 0 ]; then
|
||||
@@ -89,67 +86,15 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for f in "${FILES[@]}"; do
|
||||
if [ ! -f "$f" ]; then
|
||||
echo "Error: expected binary not found: $f" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Will add: $f"
|
||||
done
|
||||
|
||||
zip -j "$ARCHIVE_NAME" "${FILES[@]}"
|
||||
|
||||
- name: Upload archive as artifact
|
||||
- name: Upload ZIP artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: archive-${{ matrix.arch }}
|
||||
path: pwsp-*.zip
|
||||
retention-days: 7
|
||||
|
||||
deb-build:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- arch: x64
|
||||
runner: ubuntu-latest
|
||||
- arch: arm64
|
||||
runner: ubuntu-24.04-arm
|
||||
fail-fast: false
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
steps:
|
||||
- name: Install apt deps (dev-libs)
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libpipewire-0.3-dev \
|
||||
libclang-dev \
|
||||
libasound2-dev \
|
||||
libdbus-1-dev \
|
||||
pkg-config
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
toolchain: 1.96.0
|
||||
|
||||
- name: Rust Cache
|
||||
uses: swatinem/rust-cache@v2
|
||||
|
||||
- name: Build all binaries (debug-speed compilation into target/release)
|
||||
env:
|
||||
CARGO_PROFILE_RELEASE_OPT_LEVEL: 0
|
||||
CARGO_PROFILE_RELEASE_DEBUG: "true"
|
||||
CARGO_PROFILE_RELEASE_STRIP: "false"
|
||||
CARGO_PROFILE_RELEASE_LTO: "false"
|
||||
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 256
|
||||
run: cargo build --release --locked
|
||||
|
||||
- name: Cache cargo-deb
|
||||
id: cache-cargo-deb
|
||||
uses: actions/cache@v4
|
||||
@@ -161,14 +106,14 @@ jobs:
|
||||
if: steps.cache-cargo-deb.outputs.cache-hit != 'true'
|
||||
run: cargo install --locked cargo-deb
|
||||
|
||||
- name: Create .deb package (debug binaries from target/release)
|
||||
- name: Create .deb package
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
export PATH="$HOME/.cargo/bin:$PATH"
|
||||
cargo-deb -p pwsp-gui --no-build --no-strip
|
||||
cargo-deb -p pwsp-gui --no-build --no-strip --profile dev
|
||||
|
||||
- name: Upload .deb(s) as artifacts
|
||||
- name: Upload .deb artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: deb-packages-${{ matrix.arch }}
|
||||
|
||||
Reference in New Issue
Block a user