mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 14:52:33 +00:00
63275d3f13
This drops us down to just a handlful of jobs, allowing us full parallelism (github caps max parallel jobs). This is dependent on us using bors to run the "ci" before merging into master. There is a balance in what to run. We should consider what is most likely to break for the widest variety of PRs. Contributors that expect an uncovered case to fail can always specify `@bors try` Motivation - Mac is similar enough to Linux, we only need to run one of them and Linux has more parallel runners on Github. - Since we deal with `OsStr`, test Windows because its different than the others. - People are most likely to make changes on `stable` and break support for MSRV, so we should verify that - Still test on `stable` to not block feedback if we run into problems with dependencies and our MSRV run. - On the other hand, beta and nightly are less likely to break on an individual PR - Remove benchmarks because most changes are not performance sensitive and we aren't looking at the results enough to justify a 30 minute run. Fixes #2801
175 lines
5.1 KiB
YAML
175 lines
5.1 KiB
YAML
name: CI
|
|
on:
|
|
push:
|
|
branches: [master, staging, trying]
|
|
jobs:
|
|
ci:
|
|
name: CI
|
|
needs: [test, wasm]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Done
|
|
run: exit 0
|
|
test:
|
|
name: Tests
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
rust: [1.54.0, stable, beta]
|
|
os: [windows-latest, macos-latest, ubuntu-latest]
|
|
target:
|
|
- i686-pc-windows-msvc
|
|
- x86_64-pc-windows-msvc
|
|
- i686-pc-windows-gnu
|
|
- x86_64-pc-windows-gnu
|
|
- x86_64-unknown-linux-gnu
|
|
- i686-unknown-linux-gnu
|
|
- x86_64-apple-darwin
|
|
features:
|
|
- none
|
|
- all
|
|
- release
|
|
exclude:
|
|
- features: release
|
|
rust: stable
|
|
- features: release
|
|
rust: beta
|
|
- os: windows-latest
|
|
target: x86_64-apple-darwin
|
|
- os: windows-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
- os: windows-latest
|
|
target: i686-unknown-linux-gnu
|
|
- os: macos-latest
|
|
target: i686-pc-windows-msvc
|
|
- os: macos-latest
|
|
target: x86_64-pc-windows-msvc
|
|
- os: macos-latest
|
|
target: i686-pc-windows-gnu
|
|
- os: macos-latest
|
|
target: x86_64-pc-windows-gnu
|
|
- os: macos-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
- os: macos-latest
|
|
target: i686-unknown-linux-gnu
|
|
- os: ubuntu-latest
|
|
target: i686-pc-windows-msvc
|
|
- os: ubuntu-latest
|
|
target: x86_64-pc-windows-msvc
|
|
- os: ubuntu-latest
|
|
target: i686-pc-windows-gnu
|
|
- os: ubuntu-latest
|
|
target: x86_64-pc-windows-gnu
|
|
- os: ubuntu-latest
|
|
target: x86_64-apple-darwin
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Install rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: ${{ matrix.rust }}
|
|
target: ${{ matrix.target }}
|
|
override: true
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Install linker
|
|
if: matrix.target == 'i686-pc-windows-gnu'
|
|
uses: egor-tensin/setup-mingw@v2
|
|
with:
|
|
platform: x86
|
|
- name: Install linker
|
|
if: matrix.target == 'x86_64-pc-windows-gnu'
|
|
uses: egor-tensin/setup-mingw@v2
|
|
- name: Install linker
|
|
if: matrix.target == 'i686-unknown-linux-gnu'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install gcc-multilib
|
|
- name: Test almost no features
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'none'
|
|
with:
|
|
command: test
|
|
args: --target ${{ matrix.target }} --no-default-features --features "std cargo" -p clap:3.0.0-beta.4
|
|
- name: Test all features
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'all'
|
|
with:
|
|
command: test
|
|
args: --target ${{ matrix.target }} --features "wrap_help yaml regex"
|
|
- name: Check debug
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'all'
|
|
with:
|
|
command: check
|
|
args: --target ${{ matrix.target }} --features "wrap_help yaml regex debug"
|
|
- name: Test release
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'release'
|
|
with:
|
|
command: test
|
|
args: --target ${{ matrix.target }} --features "wrap_help yaml regex" --release
|
|
nightly:
|
|
name: Nightly Tests
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
features:
|
|
- none
|
|
- all
|
|
- release
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
override: true
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Test almost no features
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'none'
|
|
with:
|
|
command: test
|
|
args: --no-default-features --features "std cargo" -p clap:3.0.0-beta.4
|
|
- name: Test all features
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'all'
|
|
with:
|
|
command: test
|
|
args: --features "wrap_help yaml regex"
|
|
- name: Check debug
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'all'
|
|
with:
|
|
command: check
|
|
args: --features "wrap_help yaml regex debug"
|
|
- name: Test release
|
|
uses: actions-rs/cargo@v1
|
|
if: matrix.features == 'release'
|
|
with:
|
|
command: test
|
|
args: --features "wrap_help yaml regex" --release
|
|
wasm:
|
|
name: Wasm Check
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target: [wasm32-unknown-unknown, wasm32-wasi]
|
|
steps:
|
|
- name: Install rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: 1.54.0
|
|
target: ${{ matrix.target }}
|
|
override: true
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Check
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: check
|
|
args: --target ${{ matrix.target }} --features "yaml regex"
|