2222 rust : nightly
2323 target : x86_64-unknown-linux-gnu
2424 - name : stable x86_64-unknown-linux-musl
25- os : ubuntu-20 .04
25+ os : ubuntu-22 .04
2626 rust : stable
2727 target : x86_64-unknown-linux-musl
2828 - name : stable x86_64 macos
@@ -38,24 +38,24 @@ jobs:
3838 rust : stable
3939 target : x86_64-pc-windows-msvc
4040 - name : msrv
41- os : ubuntu-20 .04
41+ os : ubuntu-22 .04
4242 # sync MSRV with docs: guide/src/guide/installation.md and Cargo.toml
43- rust : 1.74 .0
43+ rust : 1.88 .0
4444 target : x86_64-unknown-linux-gnu
4545 name : ${{ matrix.name }}
4646 steps :
47- - uses : actions/checkout@v4
47+ - uses : actions/checkout@v5
4848 - name : Install Rust
4949 run : bash ci/install-rust.sh ${{ matrix.rust }} ${{ matrix.target }}
5050 - name : Build and run tests
51- run : cargo test --locked --target ${{ matrix.target }}
51+ run : cargo test --workspace -- locked --target ${{ matrix.target }}
5252 - name : Test no default
53- run : cargo test --no-default-features --target ${{ matrix.target }}
53+ run : cargo test --workspace -- no-default-features --target ${{ matrix.target }}
5454
5555 aarch64-cross-builds :
56- runs-on : ubuntu-20 .04
56+ runs-on : ubuntu-22 .04
5757 steps :
58- - uses : actions/checkout@v4
58+ - uses : actions/checkout@v5
5959 - name : Install Rust
6060 run : bash ci/install-rust.sh stable aarch64-unknown-linux-musl
6161 - name : Build
@@ -65,11 +65,65 @@ jobs:
6565 name : Rustfmt
6666 runs-on : ubuntu-latest
6767 steps :
68- - uses : actions/checkout@v4
68+ - uses : actions/checkout@v5
6969 - name : Install Rust
7070 run : rustup update stable && rustup default stable && rustup component add rustfmt
7171 - run : cargo fmt --check
7272
73+ gui :
74+ name : GUI tests
75+ runs-on : ubuntu-latest
76+ steps :
77+ - uses : actions/checkout@v5
78+ - name : Install Rust
79+ run : bash ci/install-rust.sh stable x86_64-unknown-linux-gnu
80+ - name : Install npm
81+ uses : actions/setup-node@v6
82+ with :
83+ node-version : 24
84+ - name : Install browser-ui-test
85+ run : npm install
86+ - name : Run eslint
87+ run : npm run lint
88+ - name : Build and run tests (+ GUI)
89+ run : cargo test --locked --target x86_64-unknown-linux-gnu --test gui
90+
91+ # Ensure there are no clippy warnings
92+ clippy :
93+ runs-on : ubuntu-latest
94+ steps :
95+ - uses : actions/checkout@v5
96+ - name : Install Rust
97+ run : bash ci/install-rust.sh stable x86_64-unknown-linux-gnu
98+ - run : rustup component add clippy
99+ - run : cargo clippy --workspace --all-targets --no-deps -- -D warnings
100+
101+ docs :
102+ name : Check API docs
103+ runs-on : ubuntu-latest
104+ steps :
105+ - uses : actions/checkout@v5
106+ - name : Install Rust
107+ run : bash ci/install-rust.sh stable x86_64-unknown-linux-gnu
108+ - name : Ensure intradoc links are valid
109+ run : cargo doc --workspace --document-private-items --no-deps
110+ env :
111+ RUSTDOCFLAGS : -D warnings
112+
113+ check-version-bump :
114+ name : Check version bump
115+ runs-on : ubuntu-latest
116+ steps :
117+ - uses : actions/checkout@v5
118+ - run : rustup update stable && rustup default stable
119+ - name : Install cargo-semver-checks
120+ run : |
121+ mkdir installed-bins
122+ curl -Lf https://github.com/obi1kenobi/cargo-semver-checks/releases/download/v0.45.0/cargo-semver-checks-x86_64-unknown-linux-gnu.tar.gz \
123+ | tar -xz --directory=./installed-bins
124+ echo `pwd`/installed-bins >> $GITHUB_PATH
125+ - run : cargo semver-checks --workspace
126+
73127 # The success job is here to consolidate the total success/failure state of
74128 # all other jobs. This job is then included in the GitHub branch protection
75129 # rule which prevents merges unless all other jobs are passing. This makes
@@ -81,6 +135,11 @@ jobs:
81135 needs :
82136 - test
83137 - rustfmt
138+ - aarch64-cross-builds
139+ - gui
140+ - clippy
141+ - docs
142+ - check-version-bump
84143 runs-on : ubuntu-latest
85144 steps :
86145 - run : jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
0 commit comments