Check semver compatibility in CI #535
Workflow file for this run
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: CI | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
# Check for new issues from updated dependencies once a week (Friday noon). | |
schedule: | |
- cron: "0 12 * * 5" | |
workflow_dispatch: | |
jobs: | |
# -------------------------------------------------------------------------- | |
# LINT | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Lint | install dependencies | |
run: | | |
sudo sed -i 's/azure.archive.ubuntu.com/archive.ubuntu.com/' /etc/apt/sources.list | |
sudo apt-get -qq update | |
sudo apt install -qq -y libudev-dev | |
- name: Lint | checkout | |
uses: actions/checkout@v2 | |
- name: Lint | install toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
components: clippy, rustfmt | |
- name: Lint | rust-cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Lint | check formatting | |
run: cargo fmt -- --check | |
- name: Lint | clippy | |
run: cargo clippy --all-targets --all-features | |
# -------------------------------------------------------------------------- | |
# MSRV | |
# | |
# Check at least once per platform. | |
msrv-aarch64-apple-darwin: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: aarch64-apple-darwin | |
toolchain: "1.59.0" | |
msrv-arm-linux-androideabi: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: arm-linux-androideabi | |
toolchain: "1.59.0" | |
msrv-x86_64-unknown-freebsd: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: x86_64-unknown-freebsd | |
toolchain: "1.59.0" | |
msrv-x86_64-unknown-linux-gnu: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
extra_packages: libudev-dev | |
target: x86_64-unknown-linux-gnu | |
toolchain: "1.59.0" | |
msrv-x86_64-unknown-linux-musl: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
extra_packages: gcc-aarch64-linux-gnu | |
target: aarch64-unknown-linux-musl | |
toolchain: "1.59.0" | |
msrv-x86_64-pc-windows-msvc: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
runs_on: windows-2019 | |
target: x86_64-pc-windows-msvc | |
toolchain: "1.59.0" | |
msrv-x86_64-unknown-netbsd: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: x86_64-unknown-netbsd | |
toolchain: "1.59.0" | |
# -------------------------------------------------------------------------- | |
# Semantic Versioning | |
# | |
# Check at least once per platform as we heavily depend on platform-specific | |
# code. The feature groups are used for attempting to cover different | |
# backends for a platform (like Linux with and without libudev). | |
semver-aarch64-apple-darwin: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: | |
- aarch64-apple-darwin | |
- arm-linux-androideabi | |
- x86_64-pc-windows-msvc | |
- x86_64-unknown-freebsd | |
- x86_64-unknown-linux-gnu | |
- x86_64-unknown-netbsd | |
feature-group: | |
- "only-explicit-features" | |
- "all-features" | |
steps: | |
- run: | | |
# TODO: Harmonize with build.yaml | |
sudo sed -i 's/azure.archive.ubuntu.com/archive.ubuntu.com/' /etc/apt/sources.list | |
sudo apt-get -qq update | |
sudo apt-get -qq -y install build-essential curl git pkg-config libudev-dev | |
- uses: actions/checkout@v2 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- uses: obi1kenobi/cargo-semver-checks-action@v2 | |
with: | |
rust-target: ${{ matrix.target }} | |
feature-group: ${{ matrix.feature-group }} | |
# -------------------------------------------------------------------------- | |
# cargo-deny | |
cargo-deny: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
checks: | |
- advisories | |
- bans licenses sources | |
# Prevent sudden announcement of a new advisory from failing ci: | |
continue-on-error: ${{ matrix.checks == 'advisories' }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
with: | |
command: check ${{ matrix.checks }} | |
# -------------------------------------------------------------------------- | |
# BUILD | |
aarch64-apple-darwin: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_tests: true | |
runs_on: macos-latest | |
target: aarch64-apple-darwin | |
aarch64-apple-ios: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_tests: true | |
runs_on: macos-latest | |
target: aarch64-apple-ios | |
aarch64-unknown-linux-gnu: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
extra_packages: libudev-dev gcc-aarch64-linux-gnu libc6-dev-arm64-cross | |
target: aarch64-unknown-linux-gnu | |
aarch64-unknown-linux-musl: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_tests: true | |
extra_packages: gcc-aarch64-linux-gnu | |
target: aarch64-unknown-linux-musl | |
arm-linux-androideabi: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: arm-linux-androideabi | |
armv7-linux-androideabi: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: armv7-linux-androideabi | |
i686-pc-windows-gnu: | |
uses: ./.github/workflows/build.yaml | |
with: | |
runs_on: windows-2019 | |
target: i686-pc-windows-gnu | |
i686-pc-windows-msvc: | |
uses: ./.github/workflows/build.yaml | |
with: | |
runs_on: windows-2019 | |
target: i686-pc-windows-msvc | |
i686-unknown-linux-gnu: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
extra_packages: libudev-dev gcc-multilib | |
target: i686-unknown-linux-gnu | |
i686-unknown-linux-musl: | |
uses: ./.github/workflows/build.yaml | |
with: | |
extra_packages: libudev-dev gcc-multilib | |
target: i686-unknown-linux-musl | |
x86_64-apple-darwin: | |
uses: ./.github/workflows/build.yaml | |
with: | |
runs_on: macos-latest | |
target: x86_64-apple-darwin | |
x86_64-pc-windows-gnu: | |
uses: ./.github/workflows/build.yaml | |
with: | |
runs_on: windows-2019 | |
target: x86_64-pc-windows-gnu | |
x86_64-pc-windows-msvc: | |
uses: ./.github/workflows/build.yaml | |
with: | |
runs_on: windows-2019 | |
target: x86_64-pc-windows-msvc | |
x86_64-unknown-freebsd: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: x86_64-unknown-freebsd | |
x86_64-unknown-linux-gnu: | |
uses: ./.github/workflows/build.yaml | |
with: | |
extra_packages: libudev-dev | |
target: x86_64-unknown-linux-gnu | |
x86_64-unknown-linux-musl: | |
uses: ./.github/workflows/build.yaml | |
with: | |
target: x86_64-unknown-linux-musl | |
x86_64-unknown-netbsd: | |
uses: ./.github/workflows/build.yaml | |
with: | |
disable_extra_builds: true | |
disable_tests: true | |
target: x86_64-unknown-netbsd | |
# -------------------------------------------------------------------------- | |
# NIGHTLY BUILD | |
aarch64-apple-darwin-nightly: | |
uses: ./.github/workflows/build.yaml | |
with: | |
continue-on-error: true | |
disable_tests: true | |
runs_on: macos-latest | |
target: aarch64-apple-darwin | |
toolchain: nightly | |
x86_64-pc-windows-msvc-nightly: | |
uses: ./.github/workflows/build.yaml | |
with: | |
continue-on-error: true | |
runs_on: windows-2019 | |
target: x86_64-pc-windows-msvc | |
toolchain: nightly | |
x86_64-unknown-linux-gnu-nightly: | |
uses: ./.github/workflows/build.yaml | |
with: | |
continue-on-error: true | |
extra_packages: libudev-dev | |
target: x86_64-unknown-linux-gnu | |
toolchain: nightly |