Skip to content

Commit 558ac6b

Browse files
authored
ci: add Rust GitHub Actions workflow (pipewire-only) and README badge
- Adds GitHub Actions workflow to run rustfmt, clippy, and tests on ubuntu-latest and installs PipeWire/WirePlumber packages. - **Disables PipeWire** integration tests by default on CI via **_RUN_PIPEWIRE_INTEGRATION=false_** to avoid hardware probes on GitHub runners; tests may be enabled on self-hosted runners by setting _**RUN_PIPEWIRE_INTEGRATION.**_ - Adds a README badge for the new workflow. ## CI Status ✅ All checks passing: - Code formatting (rustfmt) - Linting (clippy) - Unit tests - Integration tests (hardware-aware tests disabled in CI)
2 parents 367d80c + 24aef4e commit 558ac6b

11 files changed

Lines changed: 1294 additions & 852 deletions

File tree

‎.github/workflows/rust-ci.yml‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Rust CI (build, lint, test)
2+
3+
on:
4+
push:
5+
branches: [ stage, main ]
6+
pull_request:
7+
branches: [ stage, main ]
8+
workflow_dispatch: # allow manual runs (useful to trigger full integration)
9+
inputs:
10+
run_integration:
11+
description: 'Run PipeWire integration tests (requires suitable runner)'
12+
required: false
13+
default: 'false'
14+
15+
jobs:
16+
build-and-test:
17+
runs-on: ubuntu-latest
18+
19+
steps:
20+
- name: Check out repository
21+
uses: actions/checkout@v4
22+
23+
- name: Install system dependencies (GTK, ALSA, PipeWire, WirePlumber)
24+
run: |
25+
sudo apt-get update -y
26+
sudo apt-get install -y build-essential pkg-config libglib2.0-dev libgtk-3-dev libasound2-dev libpipewire-0.3-dev pipewire wireplumber
27+
28+
- name: Set up Rust toolchain (actions-rs/toolchain)
29+
uses: actions-rs/toolchain@v1
30+
with:
31+
toolchain: stable
32+
components: rustfmt, clippy
33+
override: true
34+
35+
- name: Cache Cargo and target
36+
uses: actions/cache@v4
37+
with:
38+
path: |
39+
~/.cargo/registry
40+
~/.cargo/git
41+
target
42+
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
43+
restore-keys: |
44+
${{ runner.os }}-cargo-
45+
46+
- name: cargo fmt check
47+
run: cargo fmt --all -- --check
48+
49+
- name: cargo clippy (warn only)
50+
run: cargo clippy --all-targets --all-features
51+
52+
- name: Run tests
53+
env:
54+
CI: "true"
55+
GITHUB_ACTIONS: "true"
56+
RUN_PIPEWIRE_INTEGRATION: ${{ github.event.inputs.run_integration || 'false' }}
57+
run: cargo test --workspace --all-features --verbose

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Pro Audio Config
22

3+
[![Rust CI](https://github.com/Peter-L-SVK/pro_audio_config/actions/workflows/rust-ci.yml/badge.svg)](https://github.com/Peter-L-SVK/pro_audio_config/actions/workflows/rust-ci.yml)
4+
35
A professional audio configuration tool for Linux systems that provides a simple graphical interface to manage PipeWire and ALSA audio settings. Finally, an easy way to configure sample rates, bit depths, and buffer sizes without digging through config files.
46

57
## Why This Exists

0 commit comments

Comments
 (0)