-
-
Notifications
You must be signed in to change notification settings - Fork 411
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Currently we run 7 different jobs: - tests linux - tests macos - tests windows - rustfmt - clippy - examples - documentation With this change I reduced them to 4 and hopefully sped them up. The total execution time is limited by the tests, especially linux that calculates coverage. Having separate jobs for clippy and rustfmt (which take a very small amount of time) is a waste of energy. With this PR: Introduced a new cargo profile, `ci`, that should create smaller sized binaries and reduce the our cache usage. I changed the test runner for macos and windows to [nextest](https://nexte.st/), which should be faster and is specifically designed for CI. I merged all smaller tasks in a single job, misc, the steps clearly identify what is being tested so it shouldn't affect clarity. Switched to using the [rust-cache](https://github.com/Swatinem/rust-cache) GH action, this simplifies our work by no longer having to worry about which directories to cache, rust-cache handles all that for us. ~~The bors task should also be modified, I'll get to it as soon as I have time. I believe it should be possible for us to have a single workflow described and have it both be the normal CI and the bors test.~~
- Loading branch information
Showing
5 changed files
with
59 additions
and
298 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[profile.ci] | ||
# Don't fail fast in CI to run the full test suite. | ||
fail-fast = false |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,18 @@ | ||
name: Continuous integration | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
push: | ||
branches: | ||
- main | ||
|
||
name: Continuous integration | ||
- staging # bors | ||
- trying # bors | ||
|
||
jobs: | ||
test_on_linux: | ||
name: Tests on Linux | ||
coverage: | ||
name: Coverage | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
@@ -19,101 +21,44 @@ jobs: | |
toolchain: stable | ||
override: true | ||
profile: minimal | ||
- name: Cache cargo | ||
uses: actions/cache@v3 | ||
- uses: Swatinem/rust-cache@v2 | ||
with: | ||
path: | | ||
target | ||
~/.cargo/git | ||
~/.cargo/registry | ||
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }} | ||
key: tarpaulin | ||
- name: Run cargo-tarpaulin | ||
uses: actions-rs/[email protected] | ||
with: | ||
args: --features intl --ignore-tests | ||
- name: Upload to codecov.io | ||
uses: codecov/codecov-action@v3 | ||
|
||
test_on_windows: | ||
name: Tests on Windows | ||
runs-on: windows-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions-rs/[email protected] | ||
with: | ||
toolchain: stable | ||
override: true | ||
profile: minimal | ||
- name: Cache cargo | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
target | ||
~/.cargo/git | ||
~/.cargo/registry | ||
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }} | ||
- uses: actions-rs/cargo@v1 | ||
with: | ||
command: test | ||
args: -v --features intl | ||
|
||
test_on_macos: | ||
name: Tests on MacOS | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions-rs/[email protected] | ||
with: | ||
toolchain: stable | ||
override: true | ||
profile: minimal | ||
- uses: actions-rs/cargo@v1 | ||
with: | ||
command: test | ||
args: -v --features intl | ||
|
||
fmt: | ||
name: Rustfmt | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions-rs/[email protected] | ||
with: | ||
toolchain: stable | ||
override: true | ||
profile: minimal | ||
components: rustfmt | ||
- uses: actions-rs/cargo@v1 | ||
with: | ||
command: fmt | ||
args: --all -- --check | ||
|
||
clippy: | ||
name: Clippy | ||
runs-on: ubuntu-latest | ||
tests: | ||
name: Build and Test | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
matrix: | ||
os: | ||
- macos-latest | ||
- windows-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions-rs/[email protected] | ||
with: | ||
toolchain: stable | ||
override: true | ||
profile: minimal | ||
components: clippy | ||
- name: Cache cargo | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
target | ||
~/.cargo/git | ||
~/.cargo/registry | ||
key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }} | ||
- uses: actions-rs/cargo@v1 | ||
with: | ||
command: clippy | ||
args: -- --verbose | ||
- uses: Swatinem/rust-cache@v2 | ||
- name: Build tests | ||
run: cargo test --no-run --profile ci | ||
# this order is faster according to rust-analyzer | ||
- name: Build | ||
run: cargo build --all-targets --quiet --profile ci | ||
- name: Install latest nextest | ||
uses: taiki-e/install-action@nextest | ||
- name: Test with nextest | ||
run: cargo nextest run --profile ci --cargo-profile ci --features intl | ||
|
||
examples: | ||
name: Examples | ||
misc: | ||
name: Misc | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
@@ -122,45 +67,20 @@ jobs: | |
toolchain: stable | ||
override: true | ||
profile: minimal | ||
- name: Cache cargo | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
target | ||
~/.cargo/git | ||
~/.cargo/registry | ||
key: ${{ runner.os }}-cargo-examples-${{ hashFiles('**/Cargo.lock') }} | ||
components: rustfmt, clippy | ||
- uses: Swatinem/rust-cache@v2 | ||
with: | ||
key: misc | ||
- name: Lint (rustfmt) | ||
run: cargo fmt --all --check | ||
- name: Lint (clippy) | ||
run: cargo clippy --all-features --all-targets | ||
- name: Generate documentation | ||
run: cargo doc -v --document-private-items --all-features | ||
- name: Build | ||
run: cargo build --all-targets --quiet --profile ci | ||
- run: cd boa_examples | ||
- name: Build examples | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
command: build | ||
run: cargo build --quiet --profile ci | ||
- name: Run example classes | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
command: run | ||
args: --bin classes | ||
|
||
doc: | ||
name: Documentation | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions-rs/[email protected] | ||
with: | ||
toolchain: stable | ||
override: true | ||
profile: minimal | ||
- name: Cache cargo | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
target | ||
~/.cargo/git | ||
~/.cargo/registry | ||
key: ${{ runner.os }}-cargo-doc-${{ hashFiles('**/Cargo.lock') }} | ||
- name: Generate documentation | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
command: doc | ||
args: -v --document-private-items --all-features | ||
run: cargo run --bin classes --profile ci |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.