name: Rust on: push: # Run jobs when commits are pushed to # master or release-like branches: branches: - master pull_request: # Run jobs for any external PR that wants # to merge to master, too: branches: - master env: CARGO_TERM_COLOR: always # TODO: Currently pointing at latest substrate; is there a suitable binary we can pin to here? SUBSTRATE_URL: https://releases.parity.io/substrate/x86_64-debian:stretch/latest/substrate/substrate jobs: build: name: Cargo check runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Download Substrate run: | curl $SUBSTRATE_URL --output substrate --location chmod +x substrate mkdir -p ~/.local/bin mv substrate ~/.local/bin - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Rust Cache uses: Swatinem/rust-cache@v1.3.0 - name: Build uses: actions-rs/cargo@v1.0.3 with: command: check args: --all-targets --all-features --workspace fmt: name: Cargo fmt runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install Rust nightly toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rustfmt - name: Rust Cache uses: Swatinem/rust-cache@v1.3.0 - name: Cargo fmt uses: actions-rs/cargo@v1.0.3 with: command: fmt args: --all -- --check docs: name: Check documentation runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Download Substrate run: | curl $SUBSTRATE_URL --output substrate --location chmod +x substrate mkdir -p ~/.local/bin mv substrate ~/.local/bin - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Rust Cache uses: Swatinem/rust-cache@v1.3.0 - name: Check internal documentation links run: RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc -vv --workspace --no-deps --document-private-items tests: name: Cargo test runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Download Substrate run: | curl $SUBSTRATE_URL --output substrate --location chmod +x substrate mkdir -p ~/.local/bin mv substrate ~/.local/bin - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Rust Cache uses: Swatinem/rust-cache@v1.3.0 - name: Cargo test uses: actions-rs/cargo@v1.0.3 with: command: test args: --all-targets --workspace clippy: name: Cargo clippy runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v2 - name: Download Substrate run: | curl $SUBSTRATE_URL --output substrate --location chmod +x substrate mkdir -p ~/.local/bin mv substrate ~/.local/bin - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable components: clippy override: true - name: Rust Cache uses: Swatinem/rust-cache@v1.3.0 - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets -- -D warnings