Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
groups:
actions:
patterns:
- "*"
9 changes: 3 additions & 6 deletions .github/workflows/add-to-project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,10 @@ jobs:
add-to-project:
name: Add issue to project
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/add-to-project@v0.3.0
- name: Add to project board
uses: actions/add-to-project@v1
with:
# You can target a repository in a different organization
# to the issue
project-url: https://github.com/orgs/vacp2p/projects/6
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
# NOTE Currently all issues are added, might want to limit this
#labeled: bug, needs-triage
#label-operator: OR
173 changes: 54 additions & 119 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,129 +22,95 @@ on:
name: CI

jobs:
utils-test:
# skip tests on draft PRs
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !github.event.pull_request.draft)
strategy:
matrix:
platform: [ubuntu-latest, macos-latest]
crate: [utils]
runs-on: ${{ matrix.platform }}
timeout-minutes: 60

test:
name: Test - ${{ matrix.crate }} - ${{ matrix.platform }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Test utils
run: |
cargo make test --release
working-directory: ${{ matrix.crate }}

rln-test:
# skip tests on draft PRs
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !github.event.pull_request.draft)
strategy:
matrix:
platform: [ubuntu-latest, macos-latest]
crate: [rln]
feature: ["default", "stateless"]
crate: [utils, rln]
runs-on: ${{ matrix.platform }}
timeout-minutes: 60

name: Test - ${{ matrix.crate }} - ${{ matrix.platform }} - ${{ matrix.feature }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Test rln
run: |
if [ ${{ matrix.feature }} == default ]; then
cargo make test --release
else
FEATURE=$(echo "${{ matrix.feature }}" | tr '-' '_')
cargo make test_${FEATURE} --release
fi
- name: Test ${{ matrix.crate }}
run: cargo make test --release
working-directory: ${{ matrix.crate }}

rln-wasm-test:
name: Test - rln-wasm - ${{ matrix.platform }}
# skip tests on draft PRs
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !github.event.pull_request.draft)
strategy:
matrix:
platform: [ubuntu-latest, macos-latest]
crate: [rln-wasm]
feature: ["default"]
runs-on: ${{ matrix.platform }}
timeout-minutes: 60

name: Test - ${{ matrix.crate }} - ${{ matrix.platform }} - ${{ matrix.feature }}
steps:
- uses: actions/checkout@v4
- name: Checkout sources
uses: actions/checkout@v6
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Build rln-wasm
run: cargo make build
working-directory: ${{ matrix.crate }}
working-directory: rln-wasm
- name: Test rln-wasm on node
run: cargo make test --release
working-directory: ${{ matrix.crate }}
working-directory: rln-wasm
- name: Test rln-wasm on browser
run: cargo make test_browser --release
working-directory: ${{ matrix.crate }}
working-directory: rln-wasm

rln-wasm-parallel-test:
name: Test - rln-wasm-parallel - ${{ matrix.platform }}
# skip tests on draft PRs
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !github.event.pull_request.draft)
strategy:
matrix:
platform: [ubuntu-latest, macos-latest]
crate: [rln-wasm]
feature: ["parallel"]
runs-on: ${{ matrix.platform }}
timeout-minutes: 60

name: Test - ${{ matrix.crate }} - ${{ matrix.platform }} - ${{ matrix.feature }}
steps:
- uses: actions/checkout@v4
- name: Checkout sources
uses: actions/checkout@v6
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Build rln-wasm in parallel mode
run: cargo make build_parallel
working-directory: ${{ matrix.crate }}
working-directory: rln-wasm
- name: Test rln-wasm in parallel mode on browser
run: cargo make test_parallel --release
working-directory: ${{ matrix.crate }}
working-directory: rln-wasm

fmt:
# run on both ready and draft PRs
name: Format
# skip on draft PRs
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !github.event.pull_request.draft)
# run fmt tests only on ubuntu
runs-on: ubuntu-latest
timeout-minutes: 60

name: Format - ${{ matrix.platform }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
Expand All @@ -155,116 +121,85 @@ jobs:
run: cargo make fmt_check

clippy:
# run on both ready and draft PRs
name: Clippy - ${{ matrix.crate }}
# skip on draft PRs
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !github.event.pull_request.draft)
strategy:
matrix:
# run clippy tests only on ubuntu
platform: [ubuntu-latest]
# run clippy only on ubuntu
crate: [rln, rln-wasm, utils]
runs-on: ${{ matrix.platform }}
runs-on: ubuntu-latest
timeout-minutes: 60

name: Clippy - ${{ matrix.crate }} - ${{ matrix.platform }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Install wasm32 target
if: matrix.crate == 'rln-wasm'
run: rustup target add wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Check clippy wasm target
if: (success() || failure()) && (matrix.crate == 'rln-wasm')
run: |
cargo clippy --target wasm32-unknown-unknown --tests --release -- -D warnings
if: matrix.crate == 'rln-wasm'
run: cargo clippy --target wasm32-unknown-unknown --tests --release -- -D warnings
working-directory: ${{ matrix.crate }}
- name: Check clippy default feature
if: (success() || failure()) && (matrix.crate != 'rln-wasm')
run: |
cargo clippy --all-targets --tests --release -- -D warnings
- name: Check clippy stateless feature
if: (success() || failure()) && (matrix.crate == 'rln')
run: |
cargo clippy --all-targets --tests --release --features=stateless --no-default-features -- -D warnings
- name: Check clippy
if: matrix.crate != 'rln-wasm'
run: cargo clippy --all-targets --release -- -D warnings
working-directory: ${{ matrix.crate }}


benchmark-utils:
benchmark:
name: Benchmark - ${{ matrix.crate }}
# run only on ready PRs
if: github.event_name == 'pull_request' && !github.event.pull_request.draft
strategy:
matrix:
# run benchmark tests only on ubuntu
platform: [ubuntu-latest]
crate: [utils]
runs-on: ${{ matrix.platform }}
timeout-minutes: 60

name: Benchmark - ${{ matrix.crate }} - ${{ matrix.platform }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- uses: boa-dev/criterion-compare-action@v3
with:
branchName: ${{ github.base_ref }}
cwd: ${{ matrix.crate }}

benchmark-rln:
# run only on ready PRs
if: github.event_name == 'pull_request' && !github.event.pull_request.draft
strategy:
matrix:
# run benchmark tests only on ubuntu
platform: [ubuntu-latest]
crate: [rln]
feature: ["default"]
runs-on: ${{ matrix.platform }}
# run benchmarks only on ubuntu
crate: [utils, rln]
runs-on: ubuntu-latest
timeout-minutes: 60

name: Benchmark - ${{ matrix.crate }} - ${{ matrix.platform }} - ${{ matrix.feature }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- uses: boa-dev/criterion-compare-action@v3
uses: actions/checkout@v6
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Compare benchmarks
uses: boa-dev/criterion-compare-action@v3
with:
branchName: ${{ github.base_ref }}
cwd: ${{ matrix.crate }}
features: ${{ matrix.feature }}

coverage:
name: Coverage
if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'run-coverage')
runs-on: ubuntu-latest
timeout-minutes: 60

name: Coverage Report
steps:
- name: Checkout sources
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: make installdeps
- name: Install cargo-tarpaulin
run: cargo install cargo-tarpaulin
- name: Run coverage
run: |
cargo tarpaulin --out Html --output-dir ./coverage -- --test-threads 1
cargo tarpaulin --engine llvm --timeout 300 --out Html --output-dir ./coverage -- --test-threads 1
- name: Upload coverage reports
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: coverage-reports
path: ./coverage/
- name: Comment on PR with coverage link
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
script: |
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
Expand Down
Loading
Loading