mirror of
https://github.com/clap-rs/clap
synced 2024-11-10 06:44:16 +00:00
Speed up PR feedback
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
This commit is contained in:
parent
29a6a854f1
commit
63275d3f13
7 changed files with 168 additions and 113 deletions
46
.github/workflows/benchmark.yml
vendored
46
.github/workflows/benchmark.yml
vendored
|
@ -1,46 +0,0 @@
|
|||
name: Benchmark
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master]
|
||||
types: [opened, reopened, synchronize]
|
||||
concurrency:
|
||||
group: benchmark-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
benchmark:
|
||||
name: Benchmark
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
- name: Checkout base
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: master
|
||||
- name: Bench base
|
||||
run: cargo bench -- --output-format bencher | tee output.txt
|
||||
- name: Save base benchmark
|
||||
uses: pksunkara/github-action-benchmark@v1
|
||||
with:
|
||||
tool: cargo
|
||||
output-file-path: output.txt
|
||||
external-data-json-path: ./benchmark-data.json
|
||||
read-commit-id: true
|
||||
- name: Checkout pull request
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
clean: false
|
||||
- name: Bench pull request
|
||||
run: cargo bench -- --output-format bencher | tee output.txt
|
||||
- name: Compare benchmarks
|
||||
uses: pksunkara/github-action-benchmark@v2
|
||||
with:
|
||||
tool: cargo
|
||||
output-file-path: output.txt
|
||||
external-data-json-path: ./benchmark-data.json
|
||||
github-token: ${{ github.token }}
|
||||
annotate-always: true
|
87
.github/workflows/ci-pr.yml
vendored
Normal file
87
.github/workflows/ci-pr.yml
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
name: CI-PR
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master]
|
||||
concurrency:
|
||||
group: ci-pr-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
ci-pr:
|
||||
name: CI-PR
|
||||
needs: [test-minimal, test-full, msrv]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Done
|
||||
run: exit 0
|
||||
test-minimal:
|
||||
name: Tests (Minimal)
|
||||
env:
|
||||
FLAGS: --no-default-features --features 'std cargo'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest]
|
||||
rust: [stable]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: ${{ matrix.rust }}
|
||||
override: true
|
||||
- name: Cache Builds
|
||||
uses: Swatinem/rust-cache@v1
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Compile
|
||||
run: cargo test --no-run ${{ env.FLAGS }}
|
||||
- name: Test
|
||||
run: cargo test ${{ env.FLAGS }}
|
||||
test-full:
|
||||
name: Tests (Full)
|
||||
env:
|
||||
FLAGS: --features 'wrap_help yaml regex'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest]
|
||||
rust: [stable]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: ${{ matrix.rust }}
|
||||
override: true
|
||||
- name: Cache Builds
|
||||
uses: Swatinem/rust-cache@v1
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Compile
|
||||
run: cargo test --no-run ${{ env.FLAGS }}
|
||||
- name: Test
|
||||
run: cargo test ${{ env.FLAGS }}
|
||||
msrv:
|
||||
name: "Check MSRV: 1.54.0"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: 1.54.0 # MSRV
|
||||
override: true
|
||||
- name: Cache Builds
|
||||
uses: Swatinem/rust-cache@v1
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Default features
|
||||
run: cargo check --all-targets
|
||||
- name: All features + Debug
|
||||
run: cargo check --all-targets --features "wrap_help yaml regex debug"
|
||||
- name: No features
|
||||
run: cargo check --all-targets --no-default-features --features "std cargo"
|
||||
- name: UI Tests
|
||||
run: cargo test --package clap_derive -- ui
|
65
.github/workflows/ci.yml
vendored
65
.github/workflows/ci.yml
vendored
|
@ -2,16 +2,10 @@ name: CI
|
|||
on:
|
||||
push:
|
||||
branches: [master, staging, trying]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
types: [opened, reopened, synchronize]
|
||||
concurrency:
|
||||
group: ci-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
ci:
|
||||
name: CI
|
||||
needs: [test, wasm, lint]
|
||||
needs: [test, wasm]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Done
|
||||
|
@ -179,60 +173,3 @@ jobs:
|
|||
with:
|
||||
command: check
|
||||
args: --target ${{ matrix.target }} --features "yaml regex"
|
||||
lint:
|
||||
name: Linting
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
components: rustfmt, clippy
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Clippy for almost no features
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: clippy
|
||||
args: --no-default-features --features "std cargo" -p clap:3.0.0-beta.4
|
||||
- name: Clippy for all features
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: clippy
|
||||
args: --features "wrap_help yaml regex" -- -D warnings
|
||||
- name: Format check
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: fmt
|
||||
args: -- --check
|
||||
coverage:
|
||||
name: Coverage
|
||||
continue-on-error: true
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: nightly
|
||||
components: llvm-tools-preview
|
||||
override: true
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Install llvm-cov
|
||||
uses: actions-rs/install@v0.1
|
||||
with:
|
||||
crate: cargo-llvm-cov
|
||||
version: 0.1.0-alpha.4
|
||||
use-tool-cache: true
|
||||
- name: Coverage
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: llvm-cov
|
||||
args: --features "wrap_help yaml regex" --lcov --output-path lcov.info
|
||||
- name: Coveralls
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
path-to-lcov: lcov.info
|
||||
github-token: ${{ secrets.github_token }}
|
||||
|
|
39
.github/workflows/coverage.yml
vendored
Normal file
39
.github/workflows/coverage.yml
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
name: Coverage
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master]
|
||||
push:
|
||||
branches: [master, staging, trying]
|
||||
concurrency:
|
||||
group: coverage-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
coverage:
|
||||
name: Coverage
|
||||
continue-on-error: true
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: nightly
|
||||
components: llvm-tools-preview
|
||||
override: true
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Install llvm-cov
|
||||
uses: actions-rs/install@v0.1
|
||||
with:
|
||||
crate: cargo-llvm-cov
|
||||
version: 0.1.0-alpha.4
|
||||
use-tool-cache: true
|
||||
- name: Coverage
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: llvm-cov
|
||||
args: --features "wrap_help yaml regex" --lcov --output-path lcov.info
|
||||
- name: Coveralls
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
path-to-lcov: lcov.info
|
||||
github-token: ${{ secrets.github_token }}
|
40
.github/workflows/lint.yml
vendored
Normal file
40
.github/workflows/lint.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
name: Lint
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master]
|
||||
push:
|
||||
branches: [master, staging, trying]
|
||||
concurrency:
|
||||
group: lint-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
components: rustfmt, clippy
|
||||
- name: Cache Builds
|
||||
uses: Swatinem/rust-cache@v1
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Clippy for almost no features
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: clippy
|
||||
args: --no-default-features --features "std cargo"
|
||||
- name: Clippy for all features
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: clippy
|
||||
args: --features "wrap_help yaml regex" -- -D warnings
|
||||
- name: Format check
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: fmt
|
||||
args: -- --check
|
2
.github/workflows/site.yml
vendored
2
.github/workflows/site.yml
vendored
|
@ -3,8 +3,6 @@ on:
|
|||
push:
|
||||
branches: [master]
|
||||
paths: ["site/**"]
|
||||
concurrency:
|
||||
group: site
|
||||
jobs:
|
||||
site:
|
||||
name: Deploy site
|
||||
|
|
|
@ -2,7 +2,7 @@ status = [
|
|||
"CI",
|
||||
]
|
||||
pr_status = [
|
||||
"CI",
|
||||
"CI-PR", "Lint",
|
||||
]
|
||||
timeout_sec = 7200
|
||||
prerun_timeout_sec = 7200
|
||||
|
|
Loading…
Reference in a new issue