blob: 816bd888656c8ee0365f4847a75486a1abf3fd36 [file] [log] [blame]
name: CI
on:
pull_request:
push:
branches:
- master
- staging
- trying
schedule:
- cron: '00 01 * * *'
env:
RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: 1
defaults:
run:
shell: bash
jobs:
test:
name: test
strategy:
matrix:
rust:
# This is the minimum supported Rust version of this crate.
# When updating this, the reminder to update the minimum supported Rust version in README.md.
- 1.34.0
- 1.36.0
- 1.37.0
- stable
- beta
include:
- os: ubuntu
rust: nightly
# pin-project itself has no platform-dependent implementation.
# macOS is only used to check that pin-project can interoperate
# correctly with `#[cfg()]`.
- os: macos
rust: nightly
runs-on: ${{ matrix.os || 'ubuntu' }}-latest
steps:
- uses: actions/checkout@master
- name: Install Rust
run: |
. ./ci/install-rust.sh ${{ matrix.rust }}
- name: Install cargo-hack
if: matrix.rust == 'nightly'
run: |
cargo install cargo-hack
- name: Add targets
if: matrix.rust == 'nightly'
run: |
rustup target add thumbv7m-none-eabi
- name: cargo test
run: |
cargo test --all --all-features --exclude expandtest
- name: cargo test (compiletest)
if: matrix.rust == 'nightly'
run: |
cargo test -p pin-project --all-features --test compiletest -- --ignored
- name: cargo check (no-std)
if: matrix.rust == 'nightly'
run: |
cargo check --target thumbv7m-none-eabi --manifest-path tests/no-std/Cargo.toml
- name: cargo check (minimal versions)
if: matrix.rust == 'nightly'
run: |
. ./ci/check-minimal-versions.sh
expandtest:
name: expandtest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install Rust
run: |
. ./ci/install-rust.sh
- name: Install cargo-expand
run: |
cargo install cargo-expand
- name: cargo test (expandtest)
run: |
cargo test --all-features --manifest-path tests/expand/Cargo.toml
style:
name: style
strategy:
fail-fast: false
matrix:
component:
- clippy
- rustfmt
- rustdoc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Install Rust
run: |
. ./ci/install-rust.sh
- name: Install component
run: |
. ./ci/install-component.sh ${{ matrix.component }}
- name: cargo clippy
if: matrix.component == 'clippy'
run: |
cargo clippy --all --all-features --all-targets
- name: cargo fmt -- --check
if: matrix.component == 'rustfmt'
run: |
cargo fmt --all -- --check
- name: cargo doc
if: matrix.component == 'rustdoc'
env:
RUSTDOCFLAGS: -Dwarnings
run: |
cargo doc --no-deps --all --all-features
# These jobs don't actually test anything, but they're used to tell bors the
# build completed, as there is no practical way to detect when a workflow is
# successful listening to webhooks only.
#
# ALL THE PREVIOUS JOBS NEEDS TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
ci-success:
name: ci
if: github.event_name == 'push' && success()
needs:
- style
- test
- expandtest
runs-on: ubuntu-latest
steps:
- name: Mark the job as a success
run: exit 0
ci-failure:
name: ci
if: github.event_name == 'push' && !success()
needs:
- style
- test
- expandtest
runs-on: ubuntu-latest
steps:
- name: Mark the job as a failure
run: exit 1