CI: Check MSRV in CI (#37152)

As previously proposed on zulip and discussed in the coordination
meeting, add a check to CI to see if
servo still compiles with our minimum supported Rust version.
To avoid requiring changes, we define our MSRV as the current version we
are using now (1.85.0).

This does not prevent us from updating the default compiler version,
which we should still do, to
get benefits like faster compile times, newer lints and making sure
crown stays up-to-date.

We simply test that libservo compiles in CI, since libservo (and
dependencies) is what embedders would care about. We also don't need
mach (or bootstrap!) for this, so we just use cargo build.

Testing: This PR adds a CI test. [`./mach try windows-build-libservo
linux-build-libservo
mac-build-libservo`](https://github.com/jschwe/servo/actions/runs/16901171766)

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This commit is contained in:
Jonathan Schwender 2025-08-12 21:19:45 +02:00 committed by GitHub
parent 6ff5c4ef99
commit 4b91dc6d82
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 125 additions and 18 deletions

21
.github/actions/parse_msrv/action.yml vendored Normal file
View file

@ -0,0 +1,21 @@
name: Parse rust-version from libservo
description: "Parse rust-version from libservo. Requires cargo-metadata."
outputs:
rust_version:
description: "Minimum rust-version defined by libservo"
value: ${{ steps.parse_version.outputs.LIBSERVO_RUST_VERSION }}
runs:
using: "composite"
steps:
- name: Parse libservo version
id: parse_version
shell: bash
run: |
msrv=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name == "libservo") | .rust_version')
if [[ "${msrv}" == "null" ]]; then
echo "Failed to determine MSRV of libservo"
exit 1
fi
echo "libservo has a minimum supported Rust version of ${msrv}."
echo "LIBSERVO_RUST_VERSION=${msrv}" >> "$GITHUB_OUTPUT"