Merge branch 'tomas/ci-rust-1.78' (#3277) #9117
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: Build and Test | |
on: | |
push: | |
branches: | |
- main | |
# Run in PRs with conflicts (https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) | |
pull_request_target: | |
branches: | |
- main | |
types: [opened, synchronize, reopened] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number }} | |
cancel-in-progress: true | |
permissions: | |
id-token: write | |
contents: read | |
packages: read | |
env: | |
SCCACHE_S3_USE_SSL: ${{ secrets.CACHE_SSL }} | |
GIT_LFS_SKIP_SMUDGE: 1 | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: full | |
SCCACHE_BUCKET: namada-cache | |
SCCACHE_ENDPOINT: ${{ secrets.CACHE_ENDPOINT }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.CACHE_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.CACHE_SECRET_KEY }} | |
AWS_REGION: us-east-1 | |
jobs: | |
build-wasm: | |
timeout-minutes: 30 | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22-small | |
container: | |
image: ghcr.io/anoma/namada:wasm-main | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
wasm_cache_version: ["v2"] | |
mold_version: [2.4.0] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
# From https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target: | |
# "This event runs in the context of the base of the pull request, | |
# rather than in the context of the merge commit, as the pull_request | |
# event does." | |
# We set the ref to the head commit of the PR instead. | |
# For this, we have to make sure that we're not running CI on untrusted | |
# code (more info in the link above), so the repo MUST be configured | |
# to disallow that. | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target | |
wasm/wasm_source/target | |
key: ${{ runner.os }}-${{ github.job }}-wasm-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-wasm- | |
- name: Build WASM | |
run: make build-wasm-scripts | |
- name: Upload wasm artifacts (github) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha || github.sha }} | |
path: | | |
wasm/tx_*.wasm | |
wasm/vp_*.wasm | |
wasm/checksums.json | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache | |
test-wasm: | |
timeout-minutes: 30 | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22-small | |
needs: [build-wasm] | |
container: | |
image: ghcr.io/anoma/namada:wasm-main | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
wasm_cache_version: ["v2"] | |
nightly_version: [nightly-2024-05-15] | |
mold_version: [2.4.0] | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Duplicate checksums file | |
run: cp wasm/checksums.json wasm/original-checksums.json | |
- name: Install mold linker | |
run: | | |
wget -q -O- https://github.com/rui314/mold/releases/download/v${{ matrix.mold_version }}/mold-${{ matrix.mold_version }}-x86_64-linux.tar.gz | tar -xz | |
mv mold-${{ matrix.mold_version }}-x86_64-linux/bin/mold /usr/local/bin | |
- name: Download wasm artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha|| github.sha }} | |
path: ./wasm | |
env: | |
RUSTFLAGS: "-C linker=clang -C link-arg=-fuse-ld=/usr/local/bin/mold" | |
- name: Setup rust nightly | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
toolchain: ${{ matrix.nightly_version }} | |
profile: default | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target | |
wasm/wasm_source/target | |
key: ${{ runner.os }}-${{ github.job }}-wasm-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-wasm- | |
- name: Test Wasm | |
run: make test-wasm | |
- name: Check wasm up-to-date | |
run: cmp -- wasm/checksums.json wasm/original-checksums.json | |
- name: Print diff | |
if: failure() | |
run: diff -y -W 150 wasm/checksums.json wasm/original-checksums.json --suppress-common-lines | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache | |
upload-wasm: | |
timeout-minutes: 5 | |
runs-on: ${{ matrix.os }} | |
needs: [build-wasm] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
wasm_cache_version: ["v2"] | |
nightly_version: [nightly-2024-05-15] | |
mold_version: [2.4.0] | |
steps: | |
- name: Download wasm artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha|| github.sha }} | |
path: ./wasm | |
- name: Upload wasm artifacts (minio) | |
run: | | |
unset AWS_SESSION_TOKEN | |
aws --endpoint-url $S3_ENDPOINT_URL s3 sync wasm s3://$BUCKET_NAME --acl public-read --exclude "*" --include "*.wasm" --exclude "*/*" --region $AWS_REGION | |
aws --endpoint-url $S3_ENDPOINT_URL s3 cp wasm/checksums.json s3://$BUCKET_NAME/checksums.${{ github.event.pull_request.number || github.event.pull_request.head.sha || github.sha }}.json --acl public-read --region $AWS_REGION | |
env: | |
BUCKET_NAME: namada-wasm | |
AWS_REGION: us-east-1 | |
S3_ENDPOINT_URL: https://minio.heliax.click | |
AWS_ACCESS_KEY_ID: ${{ secrets.MINIO_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.MINIO_SECRET_KEY }} | |
test-unit: | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22 | |
timeout-minutes: 30 | |
needs: [build-wasm] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
nightly_version: [nightly-2024-05-15] | |
mold_version: [2.4.0] | |
make: | |
- name: ABCI | |
env: | |
RUSTC_WRAPPER: sccache | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
# See comment in build-and-test.yml | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Install libudev | |
run: sudo apt-get update && sudo apt-get -y install libudev-dev | |
- name: Install Protoc | |
uses: heliaxdev/setup-protoc@v2 | |
with: | |
version: "25.0" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
with: | |
version: "v0.7.7" | |
- name: Setup rust toolchain | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
profile: default | |
override: true | |
- name: Setup rust nightly | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
toolchain: ${{ matrix.nightly_version }} | |
profile: default | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-${{ github.job }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Start sccache server | |
run: sccache --start-server | |
- name: Install mold linker | |
run: | | |
wget -q -O- https://github.com/rui314/mold/releases/download/v${{ matrix.mold_version }}/mold-${{ matrix.mold_version }}-x86_64-linux.tar.gz | tar -xz | |
mv mold-${{ matrix.mold_version }}-x86_64-linux/bin/mold /usr/local/bin | |
- name: Download MASP parameters | |
run: | | |
mkdir -p /home/runner/.masp-params | |
curl -o /home/runner/.masp-params/masp-spend.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-spend.params\?raw\=true | |
curl -o /home/runner/.masp-params/masp-output.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-output.params?raw=true | |
curl -o /home/runner/.masp-params/masp-convert.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-convert.params?raw=true | |
- name: Download wasm artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha|| github.sha }} | |
path: ./wasm | |
- uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Check crates build with default features | |
run: make check-crates | |
- name: Run unit tests | |
run: make test-unit-with-coverage | |
env: | |
NAMADA_MASP_PARAMS_DIR: /home/runner/.masp-params | |
RUSTFLAGS: "-C linker=clang -C link-arg=-fuse-ld=/usr/local/bin/mold" | |
- name: Upload coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
files: lcov.info | |
verbose: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
- name: Print sccache stats | |
if: always() | |
run: sccache --show-stats || true | |
- name: Stop sccache server | |
if: always() | |
run: sccache --stop-server || true | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache | |
test-integration: | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22-small | |
timeout-minutes: 30 | |
needs: [build-wasm] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
nightly_version: [nightly-2024-05-15] | |
mold_version: [2.4.0] | |
make: | |
- name: ABCI | |
env: | |
RUSTC_WRAPPER: sccache | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
# See comment in build-and-test.yml | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Install libudev | |
run: sudo apt-get update && sudo apt-get -y install libudev-dev | |
- name: Install Protoc | |
uses: heliaxdev/setup-protoc@v2 | |
with: | |
version: "25.0" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
with: | |
version: "v0.7.7" | |
- name: Setup rust toolchain | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
profile: default | |
override: true | |
- name: Setup rust nightly | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
toolchain: ${{ matrix.nightly_version }} | |
profile: default | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-${{ github.job }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Start sccache server | |
run: sccache --start-server | |
- name: Install mold linker | |
run: | | |
wget -q -O- https://github.com/rui314/mold/releases/download/v${{ matrix.mold_version }}/mold-${{ matrix.mold_version }}-x86_64-linux.tar.gz | tar -xz | |
mv mold-${{ matrix.mold_version }}-x86_64-linux/bin/mold /usr/local/bin | |
- name: Download MASP parameters | |
run: | | |
mkdir -p /home/runner/.masp-params | |
curl -o /home/runner/.masp-params/masp-spend.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-spend.params\?raw\=true | |
curl -o /home/runner/.masp-params/masp-output.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-output.params?raw=true | |
curl -o /home/runner/.masp-params/masp-convert.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-convert.params?raw=true | |
- name: Download wasm artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha|| github.sha }} | |
path: ./wasm | |
- name: Run integration tests | |
run: make test-integration | |
env: | |
NAMADA_MASP_PARAMS_DIR: /home/runner/.masp-params | |
RUSTFLAGS: "-C linker=clang -C link-arg=-fuse-ld=/usr/local/bin/mold" | |
- name: Print sccache stats | |
if: always() | |
run: sccache --show-stats || true | |
- name: Stop sccache server | |
if: always() | |
run: sccache --stop-server || true | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache | |
run-benchmarks: | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22 | |
timeout-minutes: 60 | |
needs: [build-wasm] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
nightly_version: [nightly-2024-05-15] | |
mold_version: [2.4.0] | |
make: | |
- name: ABCI | |
env: | |
RUSTC_WRAPPER: sccache | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
# See comment in build-and-test.yml | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Install libudev | |
run: sudo apt-get update && sudo apt-get -y install libudev-dev | |
- name: Install Protoc | |
uses: heliaxdev/setup-protoc@v2 | |
with: | |
version: "25.0" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
with: | |
version: "v0.7.7" | |
- name: Setup rust toolchain | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
profile: default | |
override: true | |
- name: Setup rust nightly | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
toolchain: ${{ matrix.nightly_version }} | |
profile: default | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-${{ github.job }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Start sccache server | |
run: sccache --start-server | |
- name: Install mold linker | |
run: | | |
wget -q -O- https://github.com/rui314/mold/releases/download/v${{ matrix.mold_version }}/mold-${{ matrix.mold_version }}-x86_64-linux.tar.gz | tar -xz | |
mv mold-${{ matrix.mold_version }}-x86_64-linux/bin/mold /usr/local/bin | |
- name: Download MASP parameters | |
run: | | |
mkdir -p /home/runner/.masp-params | |
curl -o /home/runner/.masp-params/masp-spend.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-spend.params\?raw\=true | |
curl -o /home/runner/.masp-params/masp-output.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-output.params?raw=true | |
curl -o /home/runner/.masp-params/masp-convert.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-convert.params?raw=true | |
- name: Download wasm artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha|| github.sha }} | |
path: ./wasm | |
- name: Run benchmarks tests | |
run: make test-benches | |
env: | |
RUSTFLAGS: "-C linker=clang -C link-arg=-fuse-ld=/usr/local/bin/mold" | |
- name: Print sccache stats | |
if: always() | |
run: sccache --show-stats || true | |
- name: Stop sccache server | |
if: always() | |
run: sccache --stop-server || true | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache | |
namada-release: | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22-big | |
timeout-minutes: 40 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
mold_version: [2.4.0] | |
make: | |
- name: ABCI Release build | |
env: | |
RUSTC_WRAPPER: sccache | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
# See comment in build-and-test.yml | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Install libudev | |
run: sudo apt-get update && sudo apt-get -y install libudev-dev | |
- name: Install Protoc | |
uses: heliaxdev/setup-protoc@v2 | |
with: | |
version: "25.0" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
with: | |
version: "v0.7.7" | |
- name: Setup rust toolchain | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
profile: default | |
override: true | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-${{ github.job }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Install mold linker | |
run: | | |
wget -q -O- https://github.com/rui314/mold/releases/download/v${{ matrix.mold_version }}/mold-${{ matrix.mold_version }}-x86_64-linux.tar.gz | tar -xz | |
mv mold-${{ matrix.mold_version }}-x86_64-linux/bin/mold /usr/local/bin | |
- name: Start sccache server | |
run: sccache --start-server | |
- name: Build | |
run: make build-release | |
env: | |
RUSTFLAGS: "-C linker=clang -C debug_assertions=true -C link-arg=-fuse-ld=/usr/local/bin/mold" | |
- name: Upload target binaries (github) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: binaries-${{ github.event.pull_request.head.sha || github.sha }} | |
path: | | |
target/release/namada | |
target/release/namadac | |
target/release/namadaw | |
target/release/namadan | |
target/release/namadar | |
- name: Upload namada binaries (minio) | |
run: | | |
unset AWS_SESSION_TOKEN | |
zip -9 $ZIP_FILENAME target/release/namada target/release/namadac target/release/namadaw target/release/namadan target/release/namadar | |
aws --endpoint-url $S3_ENDPOINT_URL s3 cp $ZIP_FILENAME s3://$BUCKET_NAME --region $AWS_REGION | |
env: | |
BUCKET_NAME: namada-binaries | |
AWS_REGION: us-east-1 | |
S3_ENDPOINT_URL: https://minio.heliax.click | |
ZIP_FILENAME: binaries-${{ github.event.pull_request.number || github.event.pull_request.head.sha || github.sha }}.zip | |
AWS_ACCESS_KEY_ID: ${{ secrets.MINIO_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.MINIO_SECRET_KEY }} | |
- name: Upload build timing report | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build-timings-${{ github.event.pull_request.head.sha || github.sha }} | |
path: target/cargo-timings/cargo-timing.html | |
retention-days: 3 | |
- name: Print sccache stats | |
if: always() | |
run: sccache --show-stats || true | |
- name: Stop sccache server | |
if: always() | |
run: sccache --stop-server || true | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache | |
namada-e2e: | |
runs-on: | |
group: namada-runners | |
labels: ubuntu-22 | |
needs: [build-wasm, namada-release] | |
# timeout-minutes: 80 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
nightly_version: [nightly-2024-05-15] | |
mold_version: [2.4.0] | |
comet_bft: [0.37.2] | |
make: | |
- index: 0 | |
- index: 1 | |
- index: 2 | |
- index: 3 | |
- index: 4 | |
- index: 5 | |
env: | |
RUSTC_WRAPPER: sccache | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'pull_request_target' }} | |
- name: Checkout PR | |
uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'pull_request_target' }} | |
# See comment in build-and-test.yml | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Install libudev | |
run: sudo apt-get update && sudo apt-get -y install libudev-dev | |
- name: Install Protoc | |
uses: heliaxdev/setup-protoc@v2 | |
with: | |
version: "25.0" | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
with: | |
version: "v0.7.7" | |
- name: Setup rust toolchain | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
profile: default | |
override: true | |
- name: Setup rust nightly | |
uses: oxidecomputer/actions-rs_toolchain@ad3f86084a8a5acf2c09cb691421b31cf8af7a36 | |
with: | |
toolchain: ${{ matrix.nightly_version }} | |
profile: default | |
- name: Cache cargo registry | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-${{ github.job }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Start sccache server | |
run: sccache --start-server | |
- name: Install mold linker | |
run: | | |
wget -q -O- https://github.com/rui314/mold/releases/download/v${{ matrix.mold_version }}/mold-${{ matrix.mold_version }}-x86_64-linux.tar.gz | tar -xz | |
mv mold-${{ matrix.mold_version }}-x86_64-linux/bin/mold /usr/local/bin | |
- name: Download MASP parameters | |
run: | | |
mkdir -p /home/runner/.masp-params | |
curl -o /home/runner/.masp-params/masp-spend.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-spend.params\?raw\=true | |
curl -o /home/runner/.masp-params/masp-output.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-output.params?raw=true | |
curl -o /home/runner/.masp-params/masp-convert.params -L https://github.com/anoma/masp-mpc/releases/download/namada-trusted-setup/masp-convert.params?raw=true | |
- name: Download wasm artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wasm-${{ github.event.pull_request.head.sha|| github.sha }} | |
path: ./wasm | |
- name: Download namada binaries | |
uses: actions/download-artifact@v3 | |
with: | |
name: binaries-${{ github.event.pull_request.head.sha || github.sha }} | |
path: ./target/release/ | |
- name: Download CometBFT | |
run: | | |
curl -o cometbft.tar.gz -LO https://github.com/cometbft/cometbft/releases/download/v${{ matrix.comet_bft }}/cometbft_${{ matrix.comet_bft }}_linux_amd64.tar.gz | |
tar -xvzf cometbft.tar.gz | |
mv cometbft /usr/local/bin | |
- name: Download Hermes | |
run: | | |
HERMES_VERSION=$(cat .github/workflows/scripts/hermes.txt) | |
echo "Using hermes version: ${HERMES_VERSION}" | |
curl -o hermes.zip -LO https://github.com/heliaxdev/hermes/releases/download/v${HERMES_VERSION}/hermes-v${HERMES_VERSION}-x86_64-unknown-linux-gnu.zip | |
unzip hermes.zip | |
mv hermes /usr/local/bin | |
- name: Download Gaia | |
run: | | |
GAIA_VERSION=$(cat .github/workflows/scripts/gaia.txt) | |
echo "Using gaiad version: ${GAIA_VERSION}" | |
curl -o gaiad -LO https://github.com/cosmos/gaia/releases/download/v${GAIA_VERSION}/gaiad-v${GAIA_VERSION}-linux-amd64 | |
mv gaiad /usr/local/bin | |
- name: Change permissions | |
run: | | |
chmod +x target/release/namada | |
chmod +x target/release/namadaw | |
chmod +x target/release/namadan | |
chmod +x target/release/namadac | |
chmod +x target/release/namadar | |
chmod +x /usr/local/bin/cometbft | |
chmod +x /usr/local/bin/hermes | |
chmod +x /usr/local/bin/gaiad | |
- name: Run e2e test | |
run: python3 .github/workflows/scripts/schedule-e2e.py | |
env: | |
NAMADA_MASP_PARAMS_DIR: /home/runner/.masp-params | |
NAMADA_E2E_USE_PREBUILT_BINARIES: "true" | |
NAMADA_E2E_KEEP_TEMP: "true" | |
NAMADA_TM_STDOUT: "false" | |
NAMADA_LOG_COLOR: "false" | |
NAMADA_LOG: "info" | |
RUSTFLAGS: "-C linker=clang -C link-arg=-fuse-ld=/usr/local/bin/mold" | |
INDEX: ${{ matrix.make.index }} | |
- name: Upload e2e logs | |
if: success() || failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: logs-e2e-${{ matrix.make.index }}-${{ github.event.pull_request.head.sha || github.sha }} | |
path: | | |
/tmp/.*/logs/ | |
/tmp/.*/setup/validator-*/logs/ | |
/tmp/.*/setup/valiator-*/e2e-test.*/*.toml | |
retention-days: 5 | |
- name: Print sccache stats | |
if: always() | |
run: sccache --show-stats || true | |
- name: Stop sccache server | |
if: always() | |
run: sccache --stop-server || true | |
- name: Clean cargo cache | |
run: | | |
cargo install cargo-cache --no-default-features --features ci-autoclean cargo-cache | |
cargo-cache |