# Test pre-releases on a larger scope (platforms & versions) to avoid bad surprises. name: Large scope on: push: branches: - staging jobs: test-versions: name: Test version compatibility on Linux runs-on: ubuntu-latest strategy: matrix: rust: [1.60.0, beta, nightly] steps: - name: Rust install uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} profile: minimal override: true components: rustfmt, clippy - name: Checkout uses: actions/checkout@v3 - name: Cache crates from crates.io uses: actions/cache@v3 continue-on-error: false with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: '${{ runner.os }}-cargo-${{ matrix.rust }}-hash-${{ hashFiles(''**/Cargo.lock'') }}' - name: Lint run: | cargo fmt --all -- --check cargo clippy -- -D warnings # - name: Install cargo check tools # timeout-minutes: 20 # if: ${{ matrix.rust == 'stable' }} # run: | # cargo install --locked cargo-outdated || true # # cargo install --locked cargo-udeps || true # needs nightly # cargo install --locked cargo-audit || true # cargo install --locked cargo-pants || true # - name: Check # if: ${{ matrix.rust == 'stable' }} # run: | # cargo outdated --exit-code 1 # # cargo udeps # rm -rf ~/.cargo/advisory-db # cargo audit --ignore RUSTSEC-2020-0071 # time-rs, but not used by chrono, see https://github.com/chronotope/chrono/issues/602 # cargo pants - name: Build (dev) run: cargo build --all-features - name: Build (release) run: cargo build --all-features --release - name: Test run: ./ci/test_full.sh test-other-platforms: name: Test on other platforms with stable runs-on: '${{ matrix.os }}' strategy: matrix: include: - os: macos-latest target: x86_64-apple-darwin type: unix - os: macos-latest target: aarch64-apple-darwin type: unix steps: - name: Rust install uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal override: true target: ${{ matrix.target }} components: rustfmt, clippy - name: Checkout uses: actions/checkout@v3 - name: Cache crates from crates.io uses: actions/cache@v3 continue-on-error: false with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: '${{ runner.os }}-${{ matrix.target }}-cargo-stable-${{ hashFiles(''**/Cargo.lock'') }}' - name: Lint run: | cargo fmt --all -- --check cargo clippy -- -D warnings # - name: Quality - convco check # run: | # git show-ref # curl -sSfLO https://github.com/convco/convco/releases/latest/download/convco-ubuntu.zip # unzip convco-ubuntu.zip # chmod +x convco # ./convco check # rm convco # shell: bash # - name: Quality - cargo deny check # run: | # curl -sSfL https://github.com/EmbarkStudios/cargo-deny/releases/download/0.12.2/cargo-deny-0.12.2-x86_64-unknown-linux-musl.tar.gz | tar zx --no-anchored cargo-deny --strip-components=1 # chmod +x cargo-deny # mv cargo-deny ~/.cargo/bin/ # cargo deny check # shell: bash - name: Install cargo check tools timeout-minutes: 20 run: | cargo install --locked cargo-outdated || true # cargo install --locked cargo-udeps || true # needs nightly cargo install --locked cargo-audit || true cargo install --locked cargo-pants || true shell: bash - name: Check run: | cargo outdated --exit-code 1 # cargo udeps rm -rf ~/.cargo/advisory-db cargo audit --ignore RUSTSEC-2020-0071 # time-rs, but not used by chrono, see https://github.com/chronotope/chrono/issues/602 cargo pants shell: bash - name: Build (dev) run: cargo build --all-features - name: Build (release) run: cargo build --all-features --release - name: Test run: ./ci/test_full.sh