Skip to content

Commit 0e6b71b

Browse files
committed
CI: remove auto AUR config; separate nmrs and nmrs-gui release workflows; simplify scripts
1 parent 0ebcf69 commit 0e6b71b

File tree

11 files changed

+229
-599
lines changed

11 files changed

+229
-599
lines changed

.github/workflows/ci.yml

Lines changed: 31 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
name: CI
2+
23
on:
34
push:
4-
branches: [ master ]
5+
branches: [master]
56
pull_request:
6-
branches: [ master, 2.x-dev ]
7+
branches: [master, 2.x-dev]
78

89
env:
910
CARGO_TERM_COLOR: always
1011
RUST_BACKTRACE: 1
11-
# Note: nmrs requires a Wayland compositor (Sway, Hyprland, GNOME Wayland, etc.)
12-
# CI tests validate compilation and core functionality only
1312

1413
jobs:
15-
fmt:
16-
name: format
14+
format:
15+
name: Format Check
1716
runs-on: ubuntu-latest
1817
steps:
1918
- uses: actions/checkout@v6
@@ -22,74 +21,12 @@ jobs:
2221
components: rustfmt
2322
- run: cargo fmt --all -- --check
2423

25-
semver:
26-
name: semver-checks
27-
runs-on: ubuntu-latest
28-
steps:
29-
- uses: actions/checkout@v6
30-
with:
31-
fetch-depth: 0 # Need full history for semver checks
32-
- name: Install dependencies
33-
run: |
34-
sudo apt-get update
35-
sudo apt-get install -y \
36-
pkg-config \
37-
libglib2.0-dev \
38-
libgirepository1.0-dev \
39-
libgdk-pixbuf2.0-dev \
40-
libpango1.0-dev \
41-
libcairo2-dev \
42-
libgtk-4-dev \
43-
libadwaita-1-dev
44-
- uses: dtolnay/rust-toolchain@stable
45-
- uses: actions/cache@v5
46-
with:
47-
path: |
48-
~/.cargo/registry
49-
~/.cargo/git
50-
target
51-
key: ${{ runner.os }}-semver-${{ hashFiles('**/Cargo.lock') }}
52-
restore-keys: |
53-
${{ runner.os }}-semver-
54-
- name: Install cargo-semver-checks
55-
run: cargo install cargo-semver-checks --locked
56-
- name: Check semver compliance (nmrs)
57-
run: |
58-
# Get the latest release tag for baseline
59-
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
60-
if [ -n "$LATEST_TAG" ]; then
61-
echo "Checking against baseline: $LATEST_TAG"
62-
# Check if the package exists in the baseline (handle renames)
63-
if git show "$LATEST_TAG:nmrs/Cargo.toml" >/dev/null 2>&1; then
64-
cargo semver-checks check-release --package nmrs --baseline-rev "$LATEST_TAG"
65-
else
66-
echo "Package 'nmrs' not found in baseline $LATEST_TAG (likely renamed), skipping semver check"
67-
fi
68-
else
69-
echo "No previous tags found, skipping semver check for nmrs"
70-
fi
71-
- name: Check semver compliance (nmrs-gui)
72-
run: |
73-
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
74-
if [ -n "$LATEST_TAG" ]; then
75-
echo "Checking against baseline: $LATEST_TAG"
76-
# Check if the package exists in the baseline (handle renames)
77-
if git show "$LATEST_TAG:nmrs-gui/Cargo.toml" >/dev/null 2>&1; then
78-
cargo semver-checks check-release --package nmrs-gui --baseline-rev "$LATEST_TAG" || true
79-
else
80-
echo "Package 'nmrs-gui' not found in baseline $LATEST_TAG (likely renamed), skipping semver check"
81-
fi
82-
else
83-
echo "No previous tags found, skipping semver check for nmrs-gui"
84-
fi
85-
# nmrs-gui may fail due to GTK bindings - continue anyway
86-
continue-on-error: true
87-
8824
clippy:
89-
name: clippy
25+
name: Clippy Lints
9026
runs-on: ubuntu-latest
9127
steps:
9228
- uses: actions/checkout@v6
29+
9330
- name: Install dependencies
9431
run: |
9532
sudo apt-get update
@@ -102,9 +39,11 @@ jobs:
10239
libcairo2-dev \
10340
libgtk-4-dev \
10441
libadwaita-1-dev
42+
10543
- uses: dtolnay/rust-toolchain@stable
10644
with:
10745
components: clippy
46+
10847
- uses: actions/cache@v5
10948
with:
11049
path: |
@@ -114,13 +53,15 @@ jobs:
11453
key: ${{ runner.os }}-clippy-${{ hashFiles('**/Cargo.lock') }}
11554
restore-keys: |
11655
${{ runner.os }}-clippy-
56+
11757
- run: cargo clippy --all-targets --all-features -- -D warnings
11858

119-
test-unit:
120-
name: unit-tests
59+
test:
60+
name: Unit Tests
12161
runs-on: ubuntu-latest
12262
steps:
12363
- uses: actions/checkout@v6
64+
12465
- name: Install dependencies
12566
run: |
12667
sudo apt-get update
@@ -132,9 +73,10 @@ jobs:
13273
libpango1.0-dev \
13374
libcairo2-dev \
13475
libgtk-4-dev \
135-
libadwaita-1-dev \
136-
xvfb
76+
libadwaita-1-dev
77+
13778
- uses: dtolnay/rust-toolchain@stable
79+
13880
- uses: actions/cache@v5
13981
with:
14082
path: |
@@ -144,67 +86,24 @@ jobs:
14486
key: ${{ runner.os }}-test-${{ hashFiles('**/Cargo.lock') }}
14587
restore-keys: |
14688
${{ runner.os }}-test-
89+
14790
- name: Run unit tests
14891
run: cargo test --lib --all-features --workspace
149-
- name: Run UI tests with virtual display
150-
run: |
151-
# Note: nmrs UI requires a Wayland compositor at runtime
152-
# These smoke tests only verify compilation and basic GTK initialization
153-
xvfb-run -a cargo test --test smoke_test --test style_test
154-
155-
networkmanager:
156-
name: networkmanager
157-
runs-on: ubuntu-latest
158-
steps:
159-
- uses: actions/checkout@v6
160-
- name: Install dependencies
161-
run: |
162-
sudo apt-get update
163-
sudo apt-get install -y \
164-
pkg-config \
165-
libglib2.0-dev \
166-
libgirepository1.0-dev \
167-
libgdk-pixbuf2.0-dev \
168-
libpango1.0-dev \
169-
libcairo2-dev \
170-
libgtk-4-dev \
171-
libadwaita-1-dev \
172-
network-manager \
173-
dbus-x11
174-
- uses: dtolnay/rust-toolchain@stable
175-
- uses: actions/cache@v5
176-
with:
177-
path: |
178-
~/.cargo/registry
179-
~/.cargo/git
180-
target
181-
key: ${{ runner.os }}-integration-${{ hashFiles('**/Cargo.lock') }}
182-
restore-keys: |
183-
${{ runner.os }}-integration-
184-
- name: Start D-Bus system bus
185-
run: |
186-
sudo systemctl start dbus
187-
- name: Verify integration tests compile
188-
run: cargo test --test integration_test --all-features --no-run
189-
- name: Start NetworkManager
190-
run: |
191-
sudo systemctl start NetworkManager
192-
sleep 3
193-
- name: Run integration tests
194-
run: sudo -E env "PATH=$PATH" $(which cargo) test --test integration_test --all-features -- --nocapture || true
19592

19693
build:
197-
name: build (${{ matrix.target }})
94+
name: Build (${{ matrix.target }})
19895
runs-on: ubuntu-latest
19996
strategy:
97+
fail-fast: false
20098
matrix:
20199
include:
202100
- target: x86_64-unknown-linux-gnu
203-
packages: nmrs-gui
101+
packages: nmrs nmrs-gui
204102
- target: aarch64-unknown-linux-gnu
205103
packages: nmrs
206104
steps:
207105
- uses: actions/checkout@v6
106+
208107
- name: Install dependencies
209108
run: |
210109
sudo apt-get update
@@ -217,12 +116,15 @@ jobs:
217116
libcairo2-dev \
218117
libgtk-4-dev \
219118
libadwaita-1-dev
119+
220120
- name: Install cross-compilation tools
221121
if: matrix.target == 'aarch64-unknown-linux-gnu'
222122
run: sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
123+
223124
- uses: dtolnay/rust-toolchain@stable
224125
with:
225126
targets: ${{ matrix.target }}
127+
226128
- uses: actions/cache@v5
227129
with:
228130
path: |
@@ -232,23 +134,13 @@ jobs:
232134
key: ${{ runner.os }}-build-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
233135
restore-keys: |
234136
${{ runner.os }}-build-${{ matrix.target }}-
235-
- name: Build
236-
run: cargo build --release --target ${{ matrix.target }} --package ${{ matrix.packages }}
137+
138+
- name: Build ${{ matrix.packages }}
139+
run: |
140+
for package in ${{ matrix.packages }}; do
141+
echo "Building $package for ${{ matrix.target }}"
142+
cargo build --release --target ${{ matrix.target }} --package $package
143+
done
237144
env:
238145
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
239146
PKG_CONFIG_ALLOW_CROSS: 1
240-
241-
audit:
242-
name: audit
243-
runs-on: ubuntu-latest
244-
steps:
245-
- uses: actions/checkout@v6
246-
- uses: dtolnay/rust-toolchain@stable
247-
- uses: actions/cache@v5
248-
with:
249-
path: |
250-
~/.cargo/registry
251-
~/.cargo/git
252-
key: ${{ runner.os }}-audit-${{ hashFiles('**/Cargo.lock') }}
253-
- run: cargo install cargo-audit
254-
- run: cargo audit

.github/workflows/publish-lib.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Publish Library
2+
3+
on:
4+
push:
5+
tags:
6+
- 'nmrs-v*'
7+
8+
jobs:
9+
publish:
10+
name: Publish to crates.io
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: write
14+
steps:
15+
- uses: actions/checkout@v6
16+
17+
- name: Parse version from tag
18+
id: version
19+
run: |
20+
TAG=${GITHUB_REF#refs/tags/nmrs-v}
21+
echo "VERSION=$TAG" >> $GITHUB_ENV
22+
echo "Publishing nmrs version: $TAG"
23+
24+
- name: Install dependencies
25+
run: |
26+
sudo apt-get update
27+
sudo apt-get install -y \
28+
pkg-config \
29+
libglib2.0-dev
30+
31+
- uses: dtolnay/rust-toolchain@stable
32+
33+
- name: Verify version matches tag
34+
run: |
35+
CARGO_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name == "nmrs") | .version')
36+
if [ "$CARGO_VERSION" != "${{ env.VERSION }}" ]; then
37+
echo "Error: Cargo.toml version ($CARGO_VERSION) doesn't match tag version (${{ env.VERSION }})"
38+
exit 1
39+
fi
40+
echo "Version check passed: $CARGO_VERSION"
41+
42+
- name: Run tests
43+
run: cargo test --package nmrs --all-features
44+
45+
- name: Publish to crates.io
46+
env:
47+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
48+
run: cargo publish --package nmrs
49+
50+
- name: Create GitHub Release
51+
uses: softprops/action-gh-release@v2
52+
with:
53+
tag_name: nmrs-v${{ env.VERSION }}
54+
name: nmrs ${{ env.VERSION }}
55+
body: |
56+
## nmrs ${{ env.VERSION }}
57+
58+
Published to [crates.io](https://crates.io/crates/nmrs/${{ env.VERSION }})
59+
60+
See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/master/CHANGELOG.md) for details.
61+
draft: false
62+
prerelease: false
63+

0 commit comments

Comments
 (0)