arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
Reduce CI time by parallelizing per-curve tests (#52)

Pratyush Mishra pratyushmishra@berkeley.edu
Mon, 12 Apr 2021 00:53:06 +0300
commit

880a010f5e5f5e7acfc537685091dc64d43b7667

parent

269fe975196aeae0e0213555868699de329a18b8

1 files changed, 35 insertions(+), 9 deletions(-)

jump to
M .github/workflows/ci.yml → .github/workflows/ci.yml

@@ -29,8 +29,8 @@ with:

command: fmt args: --all -- --check - test: - name: Test + check: + name: Check runs-on: ubuntu-latest env: RUSTFLAGS: -Dwarnings

@@ -78,13 +78,39 @@ command: check

args: --all-features --examples --workspace --benches if: matrix.rust == 'nightly' - - name: Test - uses: actions-rs/cargo@v1 - with: - command: test - args: "--workspace \ - --all-features \ - --exclude curve-benches" + + + directories: # Job that list subdirectories + name: List directories for parallelizing tests + runs-on: ubuntu-latest + outputs: + dir: ${{ steps.set-dirs.outputs.dir }} # generate output name dir by using inner step output + steps: + - uses: actions/checkout@v2 + - id: set-dirs # Give it an id to handle to get step outputs in the outputs key above + run: echo "::set-output name=dir::$(ls -d */ | jq -R -s -c 'split("\n")[:-1]')" + # Define step output named dir base on ls command transformed to JSON thanks to jq + test: + name: Test + runs-on: ubuntu-latest + needs: [directories] # Depends on previous job + strategy: + matrix: + dir: ${{fromJson(needs.directories.outputs.dir)}} # List matrix strategy from directories dynamically + # rust: + # - stable + # - nightly + exclude: + - dir: scripts/ + - dir: curve-constraint-tests/ + - dir: curve-benches/ + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Run tests + run: | + cd ${{matrix.dir}} + cargo test --all-features docs: name: Check Documentation