Lock file maintenance #663
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Rust | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
on: | |
# test renovate branches even without a PR | |
push: | |
branches: | |
- main | |
- renovate/* | |
pull_request: | |
branches: [main] | |
jobs: | |
build-docker: | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ matrix.channel == 'nightly' }} | |
strategy: | |
fail-fast: true | |
matrix: | |
channel: ["1.71", stable, nightly] | |
target: [x86_64-unknown-freebsd] | |
include: | |
- target: x86_64-unknown-freebsd | |
run_tests: NO | |
env: | |
RUST_BACKTRACE: 1 | |
CROSS_CONFIG: .github/cross.toml | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set environment variables appropriately for the build | |
run: | | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
- name: setup cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: "true" | |
- name: Install Rustup | |
run: | | |
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=none --profile=minimal -y | |
- name: Install cross | |
run: | | |
cargo install cross --git https://github.com/cross-rs/cross | |
- name: Build within docker | |
run: | | |
cross build --all-targets --target ${{matrix.target}} | |
- name: Test within docker | |
if: ${{matrix.run_tests == 'YES'}} | |
run: | | |
cross test --target ${{matrix.target}} | |
build-unix: | |
runs-on: ${{ matrix.os }}-latest | |
continue-on-error: ${{ matrix.channel == 'nightly' }} | |
strategy: | |
fail-fast: true | |
matrix: | |
channel: ["1.71", stable, nightly] | |
os: [ubuntu, macos] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: rustup default | |
run: rustup default ${{ matrix.channel }} | |
- name: rustup components | |
run: rustup component add clippy | |
- name: setup cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
# The prefix cache key, this can be changed to start a new cache manually. | |
# default: "v0-rust" | |
# prefix-key: "" | |
# A cache key that is used instead of the automatic `job`-based key, | |
# and is stable over multiple jobs. | |
# default: empty | |
# shared-key: "" | |
# An additional cache key that is added alongside the automatic `job`-based | |
# cache key and can be used to further differentiate jobs. | |
# default: empty | |
# key: "" | |
# A whitespace separated list of env-var *prefixes* who's value contributes | |
# to the environment cache key. | |
# The env-vars are matched by *prefix*, so the default `RUST` var will | |
# match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc. | |
# default: "CARGO CC CFLAGS CXX CMAKE RUST" | |
# env-vars: "" | |
# The cargo workspaces and target directory configuration. | |
# These entries are separated by newlines and have the form | |
# `$workspace -> $target`. The `$target` part is treated as a directory | |
# relative to the `$workspace` and defaults to "target" if not explicitly given. | |
# default: ". -> target" | |
# workspaces: "" | |
# Additional non workspace directories to be cached, separated by newlines. | |
# cache-directories: "" | |
# Determines whether workspace `target` directories are cached. | |
# If `false`, only the cargo registry will be cached. | |
# default: "true" | |
# cache-targets: "" | |
# Determines if the cache should be saved even when the workflow has failed. | |
# default: "false" | |
cache-on-failure: "true" | |
# Determiners whether the cache should be saved. | |
# If `false`, the cache is only restored. | |
# Useful for jobs where the matrix is additive e.g. additional Cargo features. | |
# default: "true" | |
# save-if: "" | |
- name: build | |
run: cargo build --verbose --all-targets | |
- name: test | |
run: cargo test | |
- name: Lint | |
# unknown-lints permits fixing lints on nightly without breaking stable | |
run: cargo clippy --all-targets --no-deps -- -D warnings -A unknown-lints | |
build-windows: | |
runs-on: windows-latest | |
continue-on-error: ${{ matrix.channel == 'nightly' }} | |
strategy: | |
fail-fast: true | |
matrix: | |
arch: [i686, x86_64, aarch64] | |
# "gnu" on windows isn't particularly interesting/different but very slow in | |
# CI. Skip unless/until we have a bug report where it matters. | |
variant: [msvc] | |
channel: ["1.71", stable, nightly] | |
exclude: | |
- arch: aarch64 | |
variant: gnu | |
- arch: i686 | |
variant: gnu | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: install msys2 | |
run: choco install msys2 | |
if: matrix.variant == 'gnu' | |
- name: rustup default | |
run: rustup default ${{ matrix.channel }} | |
- name: add target | |
run: rustup target add ${{ matrix.arch }}-pc-windows-${{ matrix.variant }} | |
- name: rustup components | |
run: rustup component add clippy | |
- name: setup cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
# The prefix cache key, this can be changed to start a new cache manually. | |
# default: "v0-rust" | |
# prefix-key: "" | |
# A cache key that is used instead of the automatic `job`-based key, | |
# and is stable over multiple jobs. | |
# default: empty | |
# shared-key: "" | |
# An additional cache key that is added alongside the automatic `job`-based | |
# cache key and can be used to further differentiate jobs. | |
# default: empty | |
# key: "" | |
# A whitespace separated list of env-var *prefixes* who's value contributes | |
# to the environment cache key. | |
# The env-vars are matched by *prefix*, so the default `RUST` var will | |
# match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc. | |
# default: "CARGO CC CFLAGS CXX CMAKE RUST" | |
# env-vars: "" | |
# The cargo workspaces and target directory configuration. | |
# These entries are separated by newlines and have the form | |
# `$workspace -> $target`. The `$target` part is treated as a directory | |
# relative to the `$workspace` and defaults to "target" if not explicitly given. | |
# default: ". -> target" | |
# workspaces: "" | |
# Additional non workspace directories to be cached, separated by newlines. | |
# cache-directories: "" | |
# Determines whether workspace `target` directories are cached. | |
# If `false`, only the cargo registry will be cached. | |
# default: "true" | |
# cache-targets: "" | |
# Determines if the cache should be saved even when the workflow has failed. | |
# default: "false" | |
cache-on-failure: "true" | |
# Determiners whether the cache should be saved. | |
# If `false`, the cache is only restored. | |
# Useful for jobs where the matrix is additive e.g. additional Cargo features. | |
# default: "true" | |
# save-if: "" | |
- name: Build | |
run: cargo build --verbose --target ${{ matrix.arch }}-pc-windows-${{ matrix.variant }} | |
- name: Run tests (nightly) | |
if: (matrix.arch != 'aarch64') && (matrix.channel == 'nightly') | |
run: cargo test --verbose --target ${{ matrix.arch }}-pc-windows-${{ matrix.variant }} | |
- name: Run tests | |
if: (matrix.arch != 'aarch64') && (matrix.channel != 'nightly') | |
run: cargo test --verbose --target ${{ matrix.arch }}-pc-windows-${{ matrix.variant }} | |
- name: Lint | |
# unknown-lints permits fixing lints on nightly without breaking stable | |
run: cargo clippy --all-targets --no-deps -- -D warnings -A unknown-lints |