diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d66e743500f..b2d8def90669 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,13 +1,17 @@ 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 + jobs: - nu-fmt-clippy: + fmt-clippy: strategy: fail-fast: true matrix: @@ -15,28 +19,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 + - feature: dataframe flags: "--features=dataframe " - - style: extra + - 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 @@ -52,37 +49,28 @@ jobs: - 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 - + 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 +86,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 +104,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 +116,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 +131,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 }} @@ -186,45 +152,3 @@ jobs: - 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