Revision control
Copy as Markdown
Other Tools
name: CI
on:
push:
branches:
- master
pull_request:
jobs:
# == CHECK == #
check:
name: "Check beta stable and MSRV=1.78.0"
runs-on: ubuntu-latest
strategy:
matrix:
rust-toolchains:
- 1.78.0
- stable
- beta
cargo-locked: ["--locked", ""]
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust-toolchains }}
override: true
- name: Clone repo
uses: actions/checkout@v2
- name: Update `Cargo.lock`
if: matrix.cargo-locked != '--locked'
run: cargo update -v
- name: Cargo check
uses: actions-rs/cargo@v1
with:
command: check
args: ${{ matrix.cargo-locked }}
# == BUILD & TEST == #
test:
name: Build and test
runs-on: ${{ matrix.os }}
needs: [check]
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
rust-toolchains:
- 1.78.0
- stable
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: default
override: true
toolchain: ${{ matrix.rust-toolchains }}
- name: Clone repo
uses: actions/checkout@v2
- name: Cargo test
uses: actions-rs/cargo@v1
env:
RUSTDOCFLAGS: '-Zcrate-attr=feature(macro_attributes_in_derive_output)'
RUSTFLAGS: '-Zcrate-attr=feature(macro_attributes_in_derive_output)'
RUSTC_BOOTSTRAP: '1'
with:
command: test
- name: Cargo test (embedded doc tests)
if: matrix.rust-toolchains == 'stable'
uses: actions-rs/cargo@v1
env:
RUSTC_BOOTSTRAP: 1
with:
command: test
args: --features better-docs --doc
# # == UI TESTS ==
# ui-test:
# name: UI Tests
# runs-on: ubuntu-latest
# needs: [check]
# steps:
# - name: Install Rust toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: default
# override: true
# toolchain: stable
# - name: Clone repo
# uses: actions/checkout@v2
# - name: Cargo UI test
# uses: actions-rs/cargo@v1
# with:
# command: test-ui
required-jobs:
name: 'All the required jobs'
needs:
- check
- test
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- name: 'Check success of the required jobs'
run: |
RESULT=$(echo "${{ join(needs.*.result, '') }}" | sed -e "s/success//g")
if [ -n "$RESULT" ]; then
echo "❌"
false
fi
echo "✅"