name: Test and Build Rust on: push: pull_request: schedule: # Check if it works with current dependencies - cron: '42 2 * * 6' # weekly on Saturday 2:42 UTC jobs: test: name: Test ${{ matrix.os }} ${{ matrix.toolchain }} runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.toolchain == 'nightly' }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macos-latest toolchain: - stable clippyargs: - -D clippy::pedantic -D warnings features: - --all-features include: # Check future versions and maybe get some glances on soon to be lints - os: ubuntu-latest toolchain: beta clippyargs: -W clippy::pedantic -W clippy::nursery -W clippy::cargo features: --all-features - os: ubuntu-latest toolchain: nightly clippyargs: -W clippy::pedantic features: --all-features # Check if it is still running on older Rust versions. # Sometimes they dont have lint bugfixes which results in false positives -> Dont error, just warn. # Also some specified lints are not yet existing in the older rust version -> allow unknown lints. # https://packages.debian.org/search?keywords=rustc # https://pkgs.alpinelinux.org/packages?name=rust - os: ubuntu-latest toolchain: 1.48.0 # Debian 11 Bullseye clippyargs: -A unknown-lints -A clippy::unknown-clippy-lints features: --all-features - os: ubuntu-latest toolchain: 1.52.1 # Alpine 3.14 clippyargs: -A unknown-lints features: --all-features steps: - name: Setup Rust uses: actions-rs/toolchain@v1 with: components: clippy override: true profile: minimal toolchain: ${{ matrix.toolchain }} - uses: actions/checkout@v2 - name: Check clippy uses: actions-rs/cargo@v1 with: command: clippy args: --verbose --all-targets ${{ matrix.features }} -- ${{ matrix.clippyargs }} - name: Check docs uses: actions-rs/cargo@v1 with: command: doc args: --verbose --no-deps ${{ matrix.features }} - name: Run tests uses: actions-rs/cargo@v1 with: command: test args: --verbose ${{ matrix.features }} github-release: name: Release ${{ matrix.triple }} runs-on: ${{ matrix.os }} needs: test strategy: fail-fast: false matrix: include: - os: ubuntu-latest triple: x86_64-unknown-linux-gnu - os: ubuntu-latest triple: arm-unknown-linux-gnueabihf - os: ubuntu-latest triple: armv7-unknown-linux-gnueabihf - os: ubuntu-latest triple: aarch64-unknown-linux-gnu - os: macos-latest triple: x86_64-apple-darwin - os: macos-latest triple: aarch64-apple-darwin steps: - name: Setup Rust uses: actions-rs/toolchain@v1 with: override: true profile: minimal target: ${{ matrix.triple }} toolchain: stable - uses: actions/checkout@v2 - name: Build uses: actions-rs/cargo@v1 env: # TODO: Remove this once macos-11 is macos-latest SDKROOT: /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk with: command: build args: --release --verbose --all-features --target ${{ matrix.triple }} use-cross: ${{ runner.os == 'Linux' && matrix.triple != 'x86_64-unknown-linux-gnu' }}