Skip to content

Lock file maintenance #671

Lock file maintenance

Lock file maintenance #671

Workflow file for this run

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