chore: move CI to GitHub Actions (#1763) #91
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: CI | |
on: [pull_request, push] | |
# Cancel a job if there's a new on on the same branch started. | |
# Based on https://stackoverflow.com/questions/58895283/stop-already-running-workflow-job-in-github-actions/67223051#67223051 | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: 1 | |
# Faster crates.io index checkout. | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
RUST_LOG: debug | |
jobs: | |
check_clippy: | |
runs-on: ubuntu-24.04 | |
name: Clippy | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install required packages | |
run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev | |
- name: Run cargo clippy | |
run: cargo clippy --all-targets --workspace -- -D warnings | |
check_fmt: | |
runs-on: ubuntu-24.04 | |
name: Checking fmt | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
test_release: | |
runs-on: ubuntu-24.04 | |
name: Test in release mode | |
strategy: | |
matrix: | |
cargo-args: ['', '--features fixed-rows-to-discard'] | |
env: | |
# Run all tests with multicore-SDR enabled. | |
FIL_PROOFS_USE_MULTICORE_SDR: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install required packages | |
run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev | |
- name: Download the proof params | |
uses: ./.github/actions/proof-params-download | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run usual tests in release profile | |
run: cargo test --verbose --release --workspace --all-targets ${{ matrix.cargo-args }} -- --nocapture | |
- name: Run isolated PoRep tests in release profile | |
# Getting the cores does not work on GitHub Actions, hence skip that | |
# specific test. | |
run: cargo test --release -p storage-proofs-porep --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture --skip stacked::vanilla::cores::tests::test_checkout_cores | |
- name: Run isolated update tests in release profile | |
# Some `storage-proofs-update` tests need to run sequentially due to | |
# their high memory usage. | |
run: cargo test --release -p storage-proofs-update --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture --test-threads=1 | |
test_ignored_release: | |
runs-on: ubuntu-24.04 | |
name: Test ignored in release mode | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install required packages | |
run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev | |
- name: Download the proof params | |
uses: ./.github/actions/proof-params-download | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Test ignored in release profile | |
run: cargo test --release --workspace -- ignored --nocapture | |
test_no_default_features: | |
runs-on: ubuntu-24.04 | |
name: Test without default features | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install required packages | |
run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev | |
- name: Download the proof params | |
uses: ./.github/actions/proof-params-download | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Test ignored in release profile | |
run: cargo test --release --workspace --no-default-features | |
build_gpu: | |
runs-on: ubuntu-24.04 | |
name: Build with various GPU support enabled | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install required packages | |
run: sudo apt install --no-install-recommends --yes libhwloc-dev nvidia-cuda-toolkit ocl-icd-opencl-dev | |
- name: Build with `cuda` and `opencl` features enabled | |
run: cargo build --workspace --features cuda,opencl | |
- name: Build with `cuda-supraseal` feature enabled | |
run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo build --workspace --no-default-features --features cuda-supraseal | |
# Commented out until we run it on hardware with actual GPUs. | |
#test_gpu: | |
# runs-on: ubuntu-24.04 | |
# name: Test on GPUs | |
# strategy: | |
# matrix: | |
# test-args: ['', '--ignored'] | |
# env: | |
# FIL_PROOFS_USE_GPU_COLUMN_BUILDER: true | |
# FIL_PROOFS_USE_GPU_TREE_BUILDER: true | |
# BELLMAN_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 | |
# NEPTUNE_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Install required packages | |
# run: sudo apt install --no-install-recommends --yes libhwloc-dev nvidia-cuda-toolkit ocl-icd-opencl-dev | |
# | |
# - name: Download the proof params | |
# uses: ./.github/actions/proof-params-download | |
# with: | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
# | |
# - name: Test with CUDA | |
# run: cargo test --verbose --release --workspace --features cuda -- --nocapture ${{ matrix.test-args }} | |
# - name: Test with `cuda-supraseal` | |
# run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo test -p filecoin-proofs --release --no-default-features --features cuda-supraseal -- --nocapture --test-threads=1 ${{ matrix.test-args }} | |
test_macos: | |
runs-on: macos-latest | |
name: Test in release mode on MacOS | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install required packages | |
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install hwloc | |
- name: Download the proof params | |
uses: ./.github/actions/proof-params-download | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run usual tests in release profile | |
run: cargo test --verbose --release --workspace -- --nocapture |