forked from extern/nushell
refactor the CI (#9626)
# Description this PR is an attempt at making the main CI workflow a bit easier to read, understand and work with 🤞 ## changelog - remove the deprecated `nu-coverage` job which was taking place for nothing - remove useless comments, i.e. comments that just say the same thing as the line they comment, e.g. the previous `on.push` comment, and comments that can be explained with a `git blame` inside an IDE, e.g. the comment about removing `--profile ci` on the `cargo install` in the std job - rename `nu-fmt-clippy` and `nu-tests` to `fmt-clippy` and `tests` as we already know we are working with Nushell - rename the "*style*" to "*feature*" which is exactly what `default`, `dataframe` and `extra` are - remove the `strategy.matrix.rust: stable` key: i couldn't find any documentation for this and it's not used in the jobs => by default, the toolchain of `actions-rust-lang/setup-rust-toolchain@v1.5.0` is the stable one (see the [documentation](https://github.com/actions-rust-lang/setup-rust-toolchain#inputs)) - add a top-level `env` block with all the environment variables, e.g. `CLIPPY_OPTIONS`, to have them all in one place hope you'll like that 😇 🙏 # User-Facing Changes # Tests + Formatting this PR should not change the different jobs being run in PRs and on the `main` branch. # After Submitting
This commit is contained in:
parent
fabc0a3f45
commit
667502e8da
127
.github/workflows/ci.yml
vendored
127
.github/workflows/ci.yml
vendored
@ -1,13 +1,18 @@
|
||||
on:
|
||||
pull_request:
|
||||
push: # Run CI on the main branch after every merge. This is important to fill the GitHub Actions cache in a way that pull requests can see it
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
name: continuous-integration
|
||||
|
||||
env:
|
||||
NUSHELL_CARGO_TARGET: ci
|
||||
NU_LOG_LEVEL: DEBUG
|
||||
CLIPPY_OPTIONS: "-D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err"
|
||||
|
||||
jobs:
|
||||
nu-fmt-clippy:
|
||||
fmt-clippy:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
@ -15,28 +20,21 @@ jobs:
|
||||
# builds to link against a too-new-for-many-Linux-installs glibc version. Consider
|
||||
# revisiting this when 20.04 is closer to EOL (April 2025)
|
||||
platform: [windows-latest, macos-latest, ubuntu-20.04]
|
||||
style: [default, dataframe, extra]
|
||||
rust:
|
||||
- stable
|
||||
feature: [default, dataframe, extra]
|
||||
include:
|
||||
- style: default
|
||||
- feature: default
|
||||
flags: ""
|
||||
- style: dataframe
|
||||
flags: "--features=dataframe "
|
||||
- style: extra
|
||||
flags: "--features=extra "
|
||||
- feature: dataframe
|
||||
flags: "--features=dataframe"
|
||||
- feature: extra
|
||||
flags: "--features=extra"
|
||||
exclude:
|
||||
# only test dataframes on Ubuntu (the fastest platform)
|
||||
- platform: windows-latest
|
||||
style: dataframe
|
||||
feature: dataframe
|
||||
- platform: macos-latest
|
||||
style: dataframe
|
||||
|
||||
|
||||
feature: dataframe
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
env:
|
||||
NUSHELL_CARGO_TARGET: ci
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@ -50,39 +48,30 @@ jobs:
|
||||
run: cargo fmt --all -- --check
|
||||
|
||||
- name: Clippy
|
||||
run: cargo clippy --workspace ${{ matrix.flags }}--exclude nu_plugin_* -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err
|
||||
|
||||
nu-tests:
|
||||
env:
|
||||
NUSHELL_CARGO_TARGET: ci
|
||||
run: cargo clippy --workspace ${{ matrix.flags }} --exclude nu_plugin_* -- $CLIPPY_OPTIONS
|
||||
|
||||
tests:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
platform: [windows-latest, macos-latest, ubuntu-20.04]
|
||||
style: [default, dataframe, extra]
|
||||
rust:
|
||||
- stable
|
||||
feature: [default, dataframe, extra]
|
||||
include:
|
||||
- style: default
|
||||
- feature: default
|
||||
flags: ""
|
||||
- style: dataframe
|
||||
- feature: dataframe
|
||||
flags: "--features=dataframe"
|
||||
- style: extra
|
||||
- feature: extra
|
||||
flags: "--features=extra"
|
||||
|
||||
exclude:
|
||||
# only test dataframes and extra on Ubuntu (the fastest platform)
|
||||
- platform: windows-latest
|
||||
style: dataframe
|
||||
feature: dataframe
|
||||
- platform: macos-latest
|
||||
style: dataframe
|
||||
feature: dataframe
|
||||
- platform: windows-latest
|
||||
style: extra
|
||||
feature: extra
|
||||
- platform: macos-latest
|
||||
style: extra
|
||||
|
||||
|
||||
feature: extra
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
|
||||
@ -98,15 +87,10 @@ jobs:
|
||||
run: cargo test --workspace --profile ci --exclude nu_plugin_* ${{ matrix.flags }}
|
||||
|
||||
std-lib-and-python-virtualenv:
|
||||
env:
|
||||
NU_LOG_LEVEL: DEBUG
|
||||
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
platform: [ubuntu-20.04, macos-latest, windows-latest]
|
||||
rust:
|
||||
- stable
|
||||
py:
|
||||
- py
|
||||
|
||||
@ -121,15 +105,6 @@ jobs:
|
||||
rustflags: ""
|
||||
|
||||
- name: Install Nushell
|
||||
# prior to [*standard library: bring the tests into the main CI*](#8525)
|
||||
# there was a `--profile ci` here in the `cargo install`, as well as
|
||||
# `NUSHELL_CARGO_TARGET: ci` in the prelude above.
|
||||
#
|
||||
# this caused a "stackoverflow" error in the CI on windows,
|
||||
# see [this failing job](https://github.com/nushell/nushell/actions/runs/4512034615/jobs/7944945590)
|
||||
#
|
||||
# the CI profile has been removed in 00b820de9021227d1910a9ea388297ee7aee308e
|
||||
# as part of #8525.
|
||||
run: cargo install --path . --locked --no-default-features
|
||||
|
||||
- name: Standard library tests
|
||||
@ -142,7 +117,6 @@ jobs:
|
||||
|
||||
- run: python -m pip install tox
|
||||
|
||||
# Get only the latest tagged version for stability reasons
|
||||
- name: Install virtualenv
|
||||
run: git clone https://github.com/pypa/virtualenv.git
|
||||
shell: bash
|
||||
@ -158,18 +132,11 @@ jobs:
|
||||
tox -e ${{ matrix.py }} -- -k nushell
|
||||
shell: bash
|
||||
|
||||
# Build+test plugins on their own, without the rest of Nu. This helps with CI parallelization and
|
||||
# also helps test that the plugins build without any feature unification shenanigans
|
||||
plugins:
|
||||
env:
|
||||
NUSHELL_CARGO_TARGET: ci
|
||||
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
platform: [windows-latest, macos-latest, ubuntu-20.04]
|
||||
rust:
|
||||
- stable
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
|
||||
@ -182,49 +149,7 @@ jobs:
|
||||
rustflags: ""
|
||||
|
||||
- name: Clippy
|
||||
run: cargo clippy --package nu_plugin_* ${{ matrix.flags }} -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err
|
||||
run: cargo clippy --package nu_plugin_* ${{ matrix.flags }} -- $CLIPPY_OPTIONS
|
||||
|
||||
- name: Tests
|
||||
run: cargo test --profile ci --package nu_plugin_*
|
||||
|
||||
|
||||
nu-coverage:
|
||||
if: false
|
||||
env:
|
||||
NUSHELL_CARGO_TARGET: ci
|
||||
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
# disabled mac due to problems with merging coverage and similarity to linux
|
||||
# disabled windows due to running out of disk space when having too many crates or tests
|
||||
platform: [ubuntu-20.04] # windows-latest
|
||||
rust:
|
||||
- stable
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Rust toolchain and cache
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
|
||||
with:
|
||||
rustflags: ""
|
||||
|
||||
- name: Install cargo-llvm-cov
|
||||
uses: taiki-e/install-action@cargo-llvm-cov
|
||||
|
||||
- name: Tests
|
||||
shell: bash
|
||||
run: |
|
||||
source <(cargo llvm-cov show-env --export-prefix) # Set the environment variables needed to get coverage.
|
||||
cargo llvm-cov clean --workspace # Remove artifacts that may affect the coverage results.
|
||||
cargo build --workspace --profile ci
|
||||
cargo test --workspace --profile ci
|
||||
cargo llvm-cov report --profile ci --lcov --output-path lcov.info
|
||||
|
||||
- name: Upload coverage reports to Codecov with GitHub Action
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: lcov.info
|
||||
|
Loading…
Reference in New Issue
Block a user