Merge pull request #348 from nyx-space/gh-346-bis #413
Workflow file for this run
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
name: ANISE Rust | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- '*' | |
pull_request: | |
workflow_dispatch: | |
env: | |
RUST_BACKTRACE: 1 | |
RUST_LOG: info | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install CSPICE | |
run: sh dev-env-setup.sh | |
- name: Run cargo check | |
run: cargo check --workspace --exclude anise-gui --exclude anise-py | |
test: | |
name: Run tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Download data | |
run: | | |
wget -O data/de421.bsp http://public-data.nyxspace.com/anise/de421.bsp | |
wget -O data/de430.bsp http://public-data.nyxspace.com/anise/de430.bsp | |
wget -O data/de440s.bsp http://public-data.nyxspace.com/anise/de440s.bsp | |
wget -O data/de440.bsp http://public-data.nyxspace.com/anise/de440.bsp | |
wget -O data/de440_type3.bsp http://public-data.nyxspace.com/anise/de440_type3.bsp | |
wget -O data/pck08.pca http://public-data.nyxspace.com/anise/v0.5/pck08.pca | |
wget -O data/pck11.pca http://public-data.nyxspace.com/anise/v0.5/pck11.pca | |
wget -O data/moon_fk.epa http://public-data.nyxspace.com/anise/v0.5/moon_fk.epa | |
wget -O data/moon_pa_de440_200625.bpc http://public-data.nyxspace.com/anise/moon_pa_de440_200625.bpc | |
wget -O data/gmat-hermite.bsp http://public-data.nyxspace.com/anise/ci/gmat-hermite.bsp | |
wget -O data/gmat-hermite-big-endian.bsp http://public-data.nyxspace.com/anise/ci/gmat-hermite-big-endian.bsp | |
wget -O data/variable-seg-size-hermite.bsp http://public-data.nyxspace.com/anise/ci/variable-seg-size-hermite.bsp | |
wget -O data/earth_latest_high_prec.bpc http://public-data.nyxspace.com/anise/ci/earth_latest_high_prec-2023-09-08.bpc | |
wget -O data/lro.bsp http://public-data.nyxspace.com/nyx/examples/lrorg_2023349_2024075_v01_LE.bsp | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install CSPICE | |
run: sh dev-env-setup.sh && cd .. # Return to root | |
- name: Test debug | |
env: | |
LAGRANGE_BSP: ${{ secrets.LAGRANGE_BSP }} | |
run: cargo test --workspace --exclude anise-gui --exclude anise-py | |
- name: Test release | |
env: | |
LAGRANGE_BSP: ${{ secrets.LAGRANGE_BSP }} | |
run: cargo test --release --workspace --exclude anise-gui --exclude anise-py | |
- name: Test rust_embed build | |
run: | | |
# Clean up the data folder as if we were on crates.io | |
cd anise # Build only the Rust library | |
cargo build --features embed_ephem | |
cargo build --features embed_ephem --release | |
cargo doc --features embed_ephem | |
lints: | |
name: Lints | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
- name: Run cargo clippy | |
run: cargo clippy -p anise -- -D warnings | |
validation: | |
name: Validation | |
runs-on: ubuntu-latest | |
needs: [check, test, lints] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Download data | |
run: | | |
wget -O data/de421.bsp http://public-data.nyxspace.com/anise/de421.bsp | |
wget -O data/de430.bsp http://public-data.nyxspace.com/anise/de430.bsp | |
wget -O data/de440s.bsp http://public-data.nyxspace.com/anise/de440s.bsp | |
wget -O data/de440.bsp http://public-data.nyxspace.com/anise/de440.bsp | |
wget -O data/de440_type3.bsp http://public-data.nyxspace.com/anise/de440_type3.bsp | |
wget -O data/pck08.pca http://public-data.nyxspace.com/anise/v0.5/pck08.pca | |
wget -O data/pck11.pca http://public-data.nyxspace.com/anise/v0.5/pck11.pca | |
wget -O data/gmat-hermite.bsp http://public-data.nyxspace.com/anise/ci/gmat-hermite.bsp | |
wget -O data/gmat-hermite-big-endian.bsp http://public-data.nyxspace.com/anise/ci/gmat-hermite-big-endian.bsp | |
wget -O data/variable-seg-size-hermite.bsp http://public-data.nyxspace.com/anise/ci/variable-seg-size-hermite.bsp | |
wget -O data/earth_latest_high_prec.bpc http://public-data.nyxspace.com/anise/ci/earth_latest_high_prec-2023-09-08.bpc | |
wget -O data/lro.bsp http://public-data.nyxspace.com/nyx/examples/lrorg_2023349_2024075_v01_LE.bsp | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install CSPICE | |
run: sh dev-env-setup.sh && cd .. # Return to root | |
- name: CLI SPK | |
run: | | |
cargo build --bin anise-cli --workspace --exclude anise-py | |
./target/debug/anise-cli inspect data/gmat-hermite.bsp | |
./target/debug/anise-cli inspect data/de440.bsp | |
- name: Rust-SPICE occultation validation | |
run: cargo test validate_gh_283_multi_barycenter_and_los --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --include-ignored | |
- name: Rust-SPICE JPL DE validation | |
run: RUST_BACKTRACE=1 cargo test validate_jplde --features spkezr_validation --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --include-ignored --test-threads 1 | |
- name: Rust-SPICE hermite validation | |
run: RUST_BACKTRACE=1 cargo test validate_hermite_type13_ --features spkezr_validation --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --include-ignored --test-threads 1 | |
- name: Rust-SPICE Lagrange validation | |
env: | |
LAGRANGE_BSP: ${{ secrets.LAGRANGE_BSP }} | |
run: RUST_BACKTRACE=1 cargo test validate_lagrange_type9_with_varying_segment_sizes --features spkezr_validation --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --include-ignored --test-threads 1 | |
- name: Rust-SPICE PCK validation | |
run: RUST_BACKTRACE=1 cargo test validate_iau_rotation_to_parent --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --ignored | |
- name: Rust-SPICE BPC validation | |
run: | | |
RUST_BACKTRACE=1 cargo test validate_bpc_ --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --include-ignored --test-threads 1 | |
RUST_BACKTRACE=1 cargo test de440s_translation_verif_venus2emb --release --workspace --exclude anise-gui --exclude anise-py -- --nocapture --include-ignored --test-threads 1 | |
# Now analyze the results and create pretty plots | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- name: Validation analysis | |
run: | | |
cd anise/tests/test_analysis | |
pip install -r requirements.txt | |
python spk_validation_plots.py | |
- name: Save validation artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: validation-artifacts | |
path: target/*.html | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download data | |
run: | | |
wget -O data/de421.bsp http://public-data.nyxspace.com/anise/de421.bsp | |
wget -O data/de430.bsp http://public-data.nyxspace.com/anise/de430.bsp | |
wget -O data/de440s.bsp http://public-data.nyxspace.com/anise/de440s.bsp | |
wget -O data/de440.bsp http://public-data.nyxspace.com/anise/de440.bsp | |
wget -O data/de440_type3.bsp http://public-data.nyxspace.com/anise/de440_type3.bsp | |
wget -O data/pck08.pca http://public-data.nyxspace.com/anise/v0.5/pck08.pca | |
wget -O data/pck11.pca http://public-data.nyxspace.com/anise/v0.5/pck11.pca | |
wget -O data/gmat-hermite.bsp http://public-data.nyxspace.com/anise/ci/gmat-hermite.bsp | |
wget -O data/gmat-hermite-big-endian.bsp http://public-data.nyxspace.com/anise/ci/gmat-hermite-big-endian.bsp | |
wget -O data/variable-seg-size-hermite.bsp http://public-data.nyxspace.com/anise/ci/variable-seg-size-hermite.bsp | |
wget -O data/earth_latest_high_prec.bpc http://public-data.nyxspace.com/anise/ci/earth_latest_high_prec-2023-09-08.bpc | |
wget -O data/lro.bsp http://public-data.nyxspace.com/nyx/examples/lrorg_2023349_2024075_v01_LE.bsp | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- name: Install CSPICE | |
run: sh dev-env-setup.sh && cd .. # Return to root | |
- name: Install cargo-llvm-cov | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Generate coverage report | |
env: | |
LAGRANGE_BSP: ${{ secrets.LAGRANGE_BSP }} | |
RUSTFLAGS: --cfg __ui_tests | |
run: | | |
cd anise # Prevent the workspace flag | |
cargo llvm-cov clean --workspace | |
cargo llvm-cov test --no-report -- --test-threads=1 | |
cargo llvm-cov test --no-report --tests -- compile_fail | |
cargo llvm-cov test --no-report validate_gh_283_multi_barycenter_and_los -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_iau_rotation_to_parent -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_bpc_to_iau_rotations -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_jplde_de440s_no_aberration --features spkezr_validation -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_jplde_de440s_aberration_lt --features spkezr_validation -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_jplde_de440_type3_no_aberration --features spkezr_validation -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_hermite_type13_from_gmat --features spkezr_validation -- --nocapture --ignored | |
cargo llvm-cov test --no-report validate_lagrange_type9_with_varying_segment_sizes --features spkezr_validation -- --nocapture --ignored | |
cargo llvm-cov test --no-report ut_embed --features embed_ephem | |
cargo llvm-cov report --lcov > ../lcov.txt | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v3 | |
env: | |
TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
files: ./lcov.txt | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
needs: [check, test, validation, lints] | |
if: github.ref_type == 'tag' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
components: rustfmt, clippy | |
- name: Publish to crates.io | |
env: | |
TOKEN: ${{ secrets.CRATESIO_API_TOKEN }} | |
run: | | |
cd anise # Jump into the package | |
cargo login $TOKEN | |
cargo publish |