rust.yml: run fmt/build/check/test separately

This commit is contained in:
Ferdinand Schober
2026-02-08 15:22:16 +01:00
parent b8fdbb35ac
commit e8bd604609

View File

@@ -10,149 +10,77 @@ env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
jobs: jobs:
build-linux: fmt:
name: Formatting
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: install dependencies - name: cargo fmt
run: | run: cargo fmt --check
sudo apt-get update
sudo apt-get install libx11-dev libxtst-dev
sudo apt-get install libadwaita-1-dev libgtk-4-dev
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose
- name: Check Formatting
run: cargo fmt --check
- name: Clippy
run: cargo clippy --all-features --all-targets -- --deny warnings
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: lan-mouse
path: target/debug/lan-mouse
build-windows:
runs-on: windows-latest
ci:
name: ${{ matrix.job }} ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
- macos-15-intel
job:
- build
- check
- clippy
- test
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-python@v5 - uses: Swatinem/rust-cache@v2
with: - name: Install Linux deps
python-version: '3.11' if: runner.os == 'Linux'
# needed for cache restore run: |
- name: create gtk dir sudo apt-get update
run: mkdir C:\gtk-build\gtk\x64\release sudo apt-get install libx11-dev libxtst-dev libadwaita-1-dev libgtk-4-dev
- uses: actions/cache@v3 - name: Install macOS dependencies
id: cache if: runner.os == 'macOS'
with: run: brew install gtk4 libadwaita imagemagick
path: c:/gtk-build/gtk/x64/release/** - name: Install Windows Dependencies - create gtk dir
key: gtk-windows-build if: runner.os == 'Windows'
restore-keys: gtk-windows-build run: mkdir C:\gtk-build\gtk\x64\release
- name: Update path - name: Install Windows Dependencies - install gtk from cache
run: | uses: actions/cache@v3
echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append if: runner.os == 'Windows'
echo "C:\pkg-config-lite-0.28-1\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append id: cache
echo "C:\gtk-build\gtk\x64\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append with:
echo $env:GITHUB_PATH path: c:/gtk-build/gtk/x64/release/**
echo $env:PATH key: gtk-windows-build
- name: Install dependencies restore-keys: gtk-windows-build
if: steps.cache.outputs.cache-hit != 'true' - name: Install Windows Dependencies - update PATH
run: | run: |
# choco install msys2 echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
# choco install visualstudio2022-workload-vctools echo "C:\pkg-config-lite-0.28-1\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# choco install pkgconfiglite echo "C:\gtk-build\gtk\x64\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
py -m venv .venv echo $env:GITHUB_PATH
.venv\Scripts\activate.ps1 echo $env:PATH
py -m pip install gvsbuild - name: Install Windows dependencies - build gtk
# see https://github.com/wingtk/gvsbuild/pull/1004 if: runner.os == 'Windows' && steps.cache.outputs.cache-hit != 'true'
Move-Item "C:\Program Files\Git\usr\bin" "C:\Program Files\Git\usr\notbin" run: |
Move-Item "C:\Program Files\Git\bin" "C:\Program Files\Git\notbin" # choco install msys2
gvsbuild build --msys-dir=C:\msys64 gtk4 libadwaita librsvg # choco install visualstudio2022-workload-vctools
Move-Item "C:\Program Files\Git\usr\notbin" "C:\Program Files\Git\usr\bin" # choco install pkgconfiglite
Move-Item "C:\Program Files\Git\notbin" "C:\Program Files\Git\bin" py -m venv .venv
- name: Build .venv\Scripts\activate.ps1
run: cargo build --verbose py -m pip install gvsbuild
- name: Run tests gvsbuild build --msys-dir=C:\msys64 gtk4 libadwaita librsvg
run: cargo test --verbose - name: Run cargo ${{ matrix.job }}
- name: Check Formatting run: |
run: cargo fmt --check if [ "${{ matrix.job }}" = "build" ]; then
- name: Clippy cargo build
run: cargo clippy --all-features --all-targets -- --deny warnings elif [ "${{ matrix.job }}" = "check" ]; then
- name: Copy Gtk Dlls cargo check --workspace --all-targets --all-features
run: Get-Childitem -Path "C:\\gtk-build\\gtk\\x64\\release\\bin\\*.dll" -File -Recurse | Copy-Item -Destination "target\\debug" elif [ "${{ matrix.job }}" = "clippy" ]; then
- name: Upload build artifact cargo clippy --all-features --all-targets -- --deny warnings
uses: actions/upload-artifact@v4 elif [ "${{ matrix.job }}" = "test" ]; then
with: cargo test --workspace --all-targets --all-features
name: lan-mouse-windows fi
path: |
target/debug/lan-mouse.exe
target/debug/*.dll
build-macos:
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: brew install gtk4 libadwaita imagemagick
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose
- name: Check Formatting
run: cargo fmt --check
- name: Clippy
run: cargo clippy --all-features --all-targets -- --deny warnings
- name: Make icns
run: scripts/makeicns.sh
- name: Install cargo bundle
run: cargo install cargo-bundle
- name: Bundle
run: |
cargo bundle
scripts/copy-macos-dylib.sh
- name: Zip bundle
run: |
cd target/debug/bundle/osx
zip -r "Lan Mouse macOS (Intel).zip" "Lan Mouse.app"
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: Lan Mouse macOS (Intel)
path: target/debug/bundle/osx/Lan Mouse macOS (Intel).zip
build-macos-aarch64:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: brew install gtk4 libadwaita imagemagick
- name: Build
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose
- name: Check Formatting
run: cargo fmt --check
- name: Clippy
run: cargo clippy --all-features --all-targets -- --deny warnings
- name: Make icns
run: scripts/makeicns.sh
- name: Install cargo bundle
run: cargo install cargo-bundle
- name: Bundle
run: |
cargo bundle
scripts/copy-macos-dylib.sh
- name: Zip bundle
run: |
cd target/debug/bundle/osx
zip -r "Lan Mouse macOS (ARM).zip" "Lan Mouse.app"
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: Lan Mouse macOS (ARM)
path: target/debug/bundle/osx/Lan Mouse macOS (ARM).zip