Skip to content

feat: rpc::Client #7692

feat: rpc::Client

feat: rpc::Client #7692

Workflow file for this run

name: Integration tests
concurrency:
group: '${{ github.workflow }}-${{ github.ref }}'
cancel-in-progress: '${{ github.ref != ''refs/heads/main'' }}'
'on':
workflow_dispatch: null
merge_group: null
pull_request:
branches:
- main
push:
branches:
- main
schedule:
- cron: 0 0 * * *
env:
CI: 1
CARGO_INCREMENTAL: 0
CACHE_TIMEOUT_MINUTES: 5
SCRIPT_TIMEOUT_MINUTES: 30
AWS_ACCESS_KEY_ID: '${{ secrets.AWS_ACCESS_KEY_ID }}'
AWS_SECRET_ACCESS_KEY: '${{ secrets.AWS_SECRET_ACCESS_KEY }}'
RUSTC_WRAPPER: sccache
CC: sccache clang
CXX: sccache clang++
FIL_PROOFS_PARAMETER_CACHE: /var/tmp/filecoin-proof-parameters
SHELL_IMAGE: busybox
jobs:
build-macos:
name: Build MacOS
runs-on: macos-latest
steps:
- name: Configure SCCache variables
run: |
# External PRs do not have access to 'vars' or 'secrets'.
if [[ "$AWS_ACCESS_KEY_ID" != "" ]]; then
echo "SCCACHE_ENDPOINT=${{ vars.SCCACHE_ENDPOINT}}" >> $GITHUB_ENV
echo "SCCACHE_BUCKET=${{ vars.SCCACHE_BUCKET}}" >> $GITHUB_ENV
echo "SCCACHE_REGION=${{ vars.SCCACHE_REGION}}" >> $GITHUB_ENV
fi
- name: Checkout Sources
uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.4
timeout-minutes: '${{ fromJSON(env.CACHE_TIMEOUT_MINUTES) }}'
continue-on-error: true
- name: Cargo Check
run: cargo check
build-ubuntu:
name: Build Ubuntu
runs-on: ubuntu-latest
steps:
- name: Configure SCCache variables
run: |
# External PRs do not have access to 'vars' or 'secrets'.
if [[ "${{secrets.AWS_ACCESS_KEY_ID}}" != "" ]]; then
echo "SCCACHE_ENDPOINT=${{ vars.SCCACHE_ENDPOINT}}" >> $GITHUB_ENV
echo "SCCACHE_BUCKET=${{ vars.SCCACHE_BUCKET}}" >> $GITHUB_ENV
echo "SCCACHE_REGION=${{ vars.SCCACHE_REGION}}" >> $GITHUB_ENV
fi
- run: lscpu
- name: Show IP
run: curl ifconfig.me
continue-on-error: true
- name: Checkout Sources
uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.4
timeout-minutes: '${{ fromJSON(env.CACHE_TIMEOUT_MINUTES) }}'
continue-on-error: true
- name: Install Apt Dependencies
run: |
sudo make install-deps
- name: Cargo Install
run: make install
- uses: actions/upload-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: |
~/.cargo/bin/forest*
if-no-files-found: error
cargo-publish-dry-run:
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Setup sccache
uses: mozilla-actions/sccache-action@v0.0.4
timeout-minutes: '${{ fromJSON(env.CACHE_TIMEOUT_MINUTES) }}'
continue-on-error: true
- name: Install Apt Dependencies
run: |
sudo make install-deps
- run: cargo publish --dry-run
forest-cli-check:
needs:
- build-ubuntu
name: Forest CLI checks
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: ${{ env.FIL_PROOFS_PARAMETER_CACHE }}
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: forest-cli check
run: ./scripts/tests/forest_cli_check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
calibnet-check:
needs:
- build-ubuntu
name: Calibnet check
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: Other commands check
run: ./scripts/tests/calibnet_other_check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
calibnet-stateless-mode-check:
needs:
- build-ubuntu
name: Calibnet stateless mode check
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- name: Checkout Sources
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- run: ./scripts/tests/calibnet_stateless_mode_check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
state-migrations-check:
needs:
- build-ubuntu
name: State migrations
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: Migration Regression Tests
run: ./scripts/tests/calibnet_migration_regression_tests.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
calibnet-wallet-check:
needs:
- build-ubuntu
name: Wallet tests
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: Wallet commands check
env:
CALIBNET_WALLET: '${{ secrets.CALIBNET_WALLET }}'
run: |
if [[ "$CALIBNET_WALLET" != "" ]]; then
./scripts/tests/calibnet_wallet_check.sh "$CALIBNET_WALLET"
fi
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
calibnet-export-check:
needs:
- build-ubuntu
name: Snapshot export checks
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: Snapshot export check
run: ./scripts/tests/calibnet_export_check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
calibnet-no-discovery-checks:
needs:
- build-ubuntu
name: Calibnet no discovery checks
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- run: ./scripts/tests/calibnet_no_discovery_check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
calibnet-kademlia-checks:
needs:
- build-ubuntu
name: Calibnet kademlia checks
runs-on: ubuntu-latest
steps:
- run: lscpu
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- run: ./scripts/tests/calibnet_kademlia_check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
db-migration-checks:
needs:
- build-ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: Database migration checks
run: ./scripts/tests/calibnet_db_migration.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
db-migration-checks-car-db:
needs:
- build-ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/cache@v4
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
path: ~/.cargo/bin
- name: Set permissions
run: |
chmod +x ~/.cargo/bin/forest*
- name: Database migration checks with car_db folder
run: ./scripts/tests/calibnet_db_migration_car_db.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
local-devnet-check:
name: Devnet checks
runs-on: ubuntu-latest
needs:
- build-ubuntu
env:
# We use a custom Dockerfile for CI to speed up the build process.
FOREST_DOCKERFILE_OVERRIDE: scripts/devnet/forest_ci.dockerfile
steps:
- uses: actions/cache@v4
id: cache
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-2k
- name: Load cache into volume
if: steps.cache.outputs.cache-hit == 'true'
run: |
docker volume create devnet_filecoin-proofs
docker run --rm \
-v devnet_filecoin-proofs:/proofs \
-v $FIL_PROOFS_PARAMETER_CACHE:/cache \
$SHELL_IMAGE \
sh -c "cp /cache/* /proofs"
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
- name: Devnet setup
run: ./scripts/devnet/setup.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
- name: Devnet check
run: ./scripts/devnet/check.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
- name: Dump docker logs
if: always()
uses: jwalton/gh-docker-logs@v2
- name: Prepare cache folder for uploading
if: steps.cache.outputs.cache-hit != 'true'
run: |
docker run --rm \
-v devnet_filecoin-proofs:/proofs \
-v $FIL_PROOFS_PARAMETER_CACHE:/cache \
$SHELL_IMAGE \
sh -c "cp /proofs/* /cache"
sudo chmod -R 755 $FIL_PROOFS_PARAMETER_CACHE
calibnet-rpc-checks:
needs:
- build-ubuntu
name: Calibnet RPC checks
runs-on: ubuntu-latest
env:
# We use a custom Dockerfile for CI to speed up the build process.
FOREST_DOCKERFILE_OVERRIDE: scripts/devnet/forest_ci.dockerfile
steps:
- uses: actions/cache@v4
id: cache
with:
path: '${{ env.FIL_PROOFS_PARAMETER_CACHE }}'
key: proof-params-keys
- name: Load cache into volume
if: steps.cache.outputs.cache-hit == 'true'
run: |
docker volume create api_compare_filecoin-proofs
docker run --rm \
-v api_compare_filecoin-proofs:/proofs \
-v $FIL_PROOFS_PARAMETER_CACHE:/cache \
$SHELL_IMAGE \
sh -c "cp /cache/* /proofs"
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: 'forest-${{ runner.os }}'
- name: Run api compare tests
run: ./scripts/tests/api_compare/setup.sh
timeout-minutes: '${{ fromJSON(env.SCRIPT_TIMEOUT_MINUTES) }}'
- name: Dump docker logs
if: always()
uses: jwalton/gh-docker-logs@v2
- name: Prepare cache folder for uploading
if: steps.cache.outputs.cache-hit != 'true'
run: |
docker run --rm \
-v api_compare_filecoin-proofs:/proofs \
-v $FIL_PROOFS_PARAMETER_CACHE:/cache \
$SHELL_IMAGE \
sh -c "cp /proofs/* /cache"
sudo chmod -R 755 $FIL_PROOFS_PARAMETER_CACHE