Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the ci #5

Closed
wants to merge 8 commits into from
118 changes: 21 additions & 97 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,39 @@
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:
# Pinning to Ubuntu 20.04 because building on newer Ubuntu versions causes linux-gnu
# 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
Expand All @@ -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 }}

Expand All @@ -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

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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 }}

Expand All @@ -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