name: ci on: [push, pull_request] jobs: fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly components: rustfmt - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/fmt shell: bash lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable components: clippy - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/lint shell: bash docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/docs shell: bash cargo-deny: runs-on: ubuntu-latest strategy: matrix: checks: - advisories - bans licenses sources continue-on-error: ${{ matrix.checks == 'advisories' }} steps: - uses: actions/checkout@v2 - uses: EmbarkStudios/cargo-deny-action@v1 with: command: check ${{ matrix.checks }} build-linux: runs-on: ubuntu-latest strategy: matrix: toolchain: - stable - nightly continue-on-error: ${{ matrix.toolchain == 'nightly' }} steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/build shell: bash test-linux: runs-on: ubuntu-latest needs: build-linux strategy: matrix: toolchain: - stable - nightly continue-on-error: ${{ matrix.toolchain == 'nightly' }} steps: - uses: actions/checkout@master with: fetch-depth: 0 # The 'main' branch is needed for radicle-surf vcs::git::tests::test_submodule_failure, # however actions/checkout uses the init.defaultBranch 'master' at this moment, even if # the repo does not use 'master' branch. We create 'main' branch as needed for the test. # # awk magic: create 'main' branch only if not exist yet. # END: do things at the end of the input. # NR: Number of Records in the input. - run: git branch --list main | awk 'END { if (NR == 0) system("git branch main; git branch -u origin/main main"); }' - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} - uses: baptiste0928/cargo-install@v1 with: crate: cargo-nextest version: 0.9 - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/test shell: bash build-macos: runs-on: macos-latest steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/build shell: bash test-macos: runs-on: macos-latest needs: build-macos steps: - uses: actions/checkout@master with: fetch-depth: 0 - run: git branch --list main | awk 'END { if (NR == 0) system("git branch main; git branch -u origin/main main"); }' - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: baptiste0928/cargo-install@v1 with: crate: cargo-nextest version: 0.9 - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/test shell: bash build-windows: runs-on: windows-latest continue-on-error: true steps: - uses: actions/checkout@master - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: Swatinem/rust-cache@v1 - run: ./scripts/ci/build shell: bash