apt-ostree/.github/workflows/ci.yml
robojerk 3dec23f8f7 Fix YAML linting issues and update system requirements to Debian 13+
- Fix trailing spaces and blank lines in Forgejo workflows
- Update system requirements from Ubuntu Jammy/Bookworm to Debian 13+ (Trixie)
- Update test treefile to use Debian Trixie instead of Ubuntu Jammy
- Update documentation to reflect modern system requirements
- Fix yamllint errors for CI/CD functionality
- Ensure compatibility with modern OSTree and libapt versions
2025-08-18 11:39:58 -07:00

181 lines
4.3 KiB
YAML

---
name: CI/CD Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
test:
name: Test
runs-on: "ubuntu-latest"
strategy:
matrix:
rust: [stable, 1.75]
features: [default, development, dev-full]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libostree-1-dev \
libapt-pkg-dev \
libpolkit-gobject-1-dev \
bubblewrap \
binutils \
pkg-config \
build-essential
- name: Check code formatting
run: cargo fmt --all -- --check
- name: Run Clippy
run: cargo clippy --features ${{ matrix.features }} -- -D warnings
- name: Run tests
run: cargo test --features ${{ matrix.features }}
- name: Build release
run: cargo build --release --features ${{ matrix.features }}
- name: Test development commands
if: matrix.features != 'default'
run: |
cargo run --features ${{ matrix.features }} -- testutils --help
cargo run --features ${{ matrix.features }} -- shlib-backend --help
cargo run --features ${{ matrix.features }} -- internals --help
build-debian:
name: Build Debian Package
runs-on: "ubuntu-latest"
needs: test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libostree-1-dev \
libapt-pkg-dev \
libpolkit-gobject-1-dev \
bubblewrap \
binutils \
pkg-config \
build-essential \
devscripts \
debhelper \
dh-cargo
- name: Build Debian package
run: |
./build-debian-trixie.sh
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: debian-package
path: |
*.deb
*.dsc
*.tar.*
security-audit:
name: Security Audit
runs-on: "ubuntu-latest"
strategy:
matrix:
rust: [stable]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Install cargo-audit
run: cargo install cargo-audit
- name: Run security audit
run: cargo audit
dependency-audit:
name: Dependency Audit
runs-on: "ubuntu-latest"
strategy:
matrix:
rust: [stable]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Install cargo-outdated
run: cargo install cargo-outdated
- name: Check for outdated dependencies
run: cargo outdated
documentation:
name: Build Documentation
runs-on: "ubuntu-latest"
strategy:
matrix:
features: [default, development]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libostree-1-dev \
libapt-pkg-dev \
libpolkit-gobject-1-dev \
pkg-config
- name: Build documentation
run: cargo doc --features ${{ matrix.features }} --no-deps
- name: Upload documentation
uses: actions/upload-artifact@v4
with:
name: docs-${{ matrix.features }}
path: target/doc/