Contract changes to support ERC1155 #2435
Workflow file for this run
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: Continuous Integration | |
env: | |
FOUNDRY_VERSION: nightly | |
RIVER_BLOCK_TIME: 1 | |
on: | |
schedule: | |
# Run every hour | |
- cron: '0 * * * *' | |
pull_request: | |
workflow_dispatch: # Allow manual trigger in GitHub UI | |
inputs: | |
skip_common_ci: | |
description: Skip Common CI checks (i.e linting, prettier, etc) | |
required: false | |
default: false | |
type: boolean | |
skip_client_noentitlements: | |
description: Skip Client Tests without entitlements | |
required: false | |
default: false | |
type: boolean | |
skip_multinode: | |
description: Skip Multi-node Tests | |
required: false | |
default: false | |
type: boolean | |
skip_client_entitlements: | |
description: Skip Client Tests with entitlements | |
required: false | |
default: false | |
type: boolean | |
skip_multinode_ent: | |
description: Skip Multi-node Ent Tests | |
required: false | |
default: false | |
type: boolean | |
skip_go: | |
description: Skip Go Tests | |
required: false | |
default: false | |
type: boolean | |
skip_xchain_integration: | |
description: Skip XChain Integration Tests | |
required: false | |
default: false | |
type: boolean | |
jobs: | |
Common_CI: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_common_ci | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
steps: | |
- name: Print bash environment | |
run: env | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
# Start an ssh session with tmate if the PR has the 'ssh' label | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: contains(github.event.pull_request.labels.*.name, 'ssh') | |
- name: Start and configure blockchains | |
run: ./scripts/bc-all-start.sh | |
- name: Maintain Turbo cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules/.cache/turbo | |
key: ${{ runner.os }}-turbo-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-turbo- | |
- name: Setup Done | |
id: setup_success | |
run: echo "Setup done, running all checks..." | |
- name: Syncpack | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
run: yarn syncpack:check | |
- name: Build | |
id: ts_build | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
run: yarn build | |
- name: Prettier | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
run: yarn prettier:check | |
- name: Lint | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
run: yarn lint | |
- name: Linting River Node | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
version: latest | |
working-directory: core | |
args: --timeout=10m --config=.golangci.yml | |
- name: Linting River Node W/ Custom Rules | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
run: | | |
cd core/node | |
./lint_extensions.sh > river_lint_extensions.txt | |
if [ -s river_lint_extensions.txt ]; then | |
echo "Linter found issues:" | |
cat river_lint_extensions.txt | |
exit 1 | |
fi | |
- name: Staticcheck River Node | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
uses: dominikh/staticcheck-action@v1 | |
with: | |
version: latest | |
working-directory: core | |
install-go: false | |
# - name: Terraform Lint | |
# run: make lint | |
# working-directory: ./infra | |
- name: Build town types | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' }} | |
run: ./scripts/build-contract-types.sh localhost --frozen | |
- name: Unit Tests | |
if: ${{ !cancelled() && steps.setup_success.outcome == 'success' && steps.ts_build.outcome == 'success' }} | |
run: yarn test:unit | |
Client_NoEntitlements: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_client_noentitlements | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
services: | |
postgres-core: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
ports: | |
# Maps tcp port 5433 on service container to the host | |
- 5433:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name river_postgres_container | |
steps: | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Increase max_connections in Postgres | |
run: | | |
docker exec -i river_postgres_container bash << EOF | |
echo 'max_connections = 1000' >> /var/lib/postgresql/data/postgresql.conf | |
echo 'shared_buffers = 2GB' >> /var/lib/postgresql/data/postgresql.conf | |
EOF | |
docker restart --time 0 river_postgres_container | |
sleep 5 | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Git submodules | |
run: git submodule update --init --recursive | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
# Start an ssh session with tmate if the PR has the 'ssh' label | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: contains(github.event.pull_request.labels.*.name, 'ssh') | |
- name: Start and configure blockchains | |
run: ./scripts/bc-all-start.sh | |
- name: Print Yarn package versions | |
run: yarn info --name-only --all | |
- name: Maintain Turbo cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules/.cache/turbo | |
key: ${{ runner.os }}-turbo-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-turbo- | |
- name: create db | |
run: psql -h localhost -p 5433 -U postgres -f scripts/sql/create_db.sql | |
working-directory: core | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Setup River CA for testing certificates | |
run: ./scripts/register-ca.sh | |
working-directory: core | |
- name: Check SSL directories and environment variables | |
run: | | |
echo "Listing /etc/ssl/certs..." | |
ls -l /etc/ssl/certs || echo "/etc/ssl/certs not found" | |
echo "Listing /system/etc/security/cacerts..." | |
ls -l /system/etc/security/cacerts || echo "/system/etc/security/cacerts not found" | |
echo "Checking SSL_CERT_FILE environment variable..." | |
echo "SSL_CERT_FILE=$SSL_CERT_FILE" | |
echo "Checking SSL_CERT_DIR environment variable..." | |
echo "SSL_CERT_DIR=$SSL_CERT_DIR" | |
- name: Run node (without entitlements) | |
run: ./core/node/run_single.sh --de & | |
- name: Wait for (without entitlements) node to be up | |
run: yarn csb:wait:no-entitlements | |
- name: Run SDK Tests (without entitlements) | |
run: yarn run turbo run build test:ci --filter=@river-build/sdk | |
- name: Run Node Restart Tests (without entitlements) | |
run: yarn workspace @river-build/sdk run test:restart | |
- name: Run Node Flush Tests (without entitlements) | |
run: yarn workspace @river-build/sdk run test:node-minipool-flush | |
- name: Archive River Node Logs and Settings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'river-node-${{ github.job }}' | |
path: | | |
./core/node/run_files/ | |
./core/xchain/run_files/ | |
!./core/**/bin/** | |
Multinode: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_multinode | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
services: | |
postgres-core: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
ports: | |
# Maps tcp port 5433 on service container to the host | |
- 5433:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name river_postgres_container | |
steps: | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Increase max_connections in Postgres | |
run: | | |
docker exec -i river_postgres_container bash << EOF | |
echo 'max_connections = 1000' >> /var/lib/postgresql/data/postgresql.conf | |
echo 'shared_buffers = 2GB' >> /var/lib/postgresql/data/postgresql.conf | |
EOF | |
docker restart --time 0 river_postgres_container | |
sleep 5 | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Git submodules | |
run: git submodule update --init --recursive | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
# Start an ssh session with tmate if the PR has the 'ssh' label | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: contains(github.event.pull_request.labels.*.name, 'ssh') | |
- name: Start and configure blockchains | |
run: ./scripts/bc-all-start.sh | |
- name: Print Yarn package versions | |
run: yarn info --name-only --all | |
- name: Maintain Turbo cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules/.cache/turbo | |
key: ${{ runner.os }}-turbo-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-turbo- | |
- name: create db | |
run: psql -h localhost -p 5433 -U postgres -f scripts/sql/create_db.sql | |
working-directory: core | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Setup River CA for testing certificates | |
run: ./scripts/register-ca.sh | |
working-directory: core | |
- name: Set up Custom CA Certificate for Node.js | |
run: | | |
echo "NODE_EXTRA_CA_CERTS=$HOME/river-ca-cert.pem" >> $GITHUB_ENV | |
- name: Run multiple nodes | |
run: | | |
cd ./core/node | |
./run_multi.sh --de -c | |
./run_multi.sh --de -r & | |
for i in {5180..5189}; do yarn wait-on https://localhost:$i/debug/multi --timeout=900000 --i=5000 --verbose; done | |
- name: Run SDK Tests (without entitlements) | |
run: | | |
yarn run turbo run build | |
cd packages/sdk | |
yarn test:ci:multi:ne | |
- name: Archive River Node Logs and Settings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'river-node-${{ github.job }}' | |
path: | | |
./core/node/run_files/ | |
./core/xchain/run_files/ | |
!./core/**/bin/** | |
Client_Entitlements: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_client_entitlements | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
services: | |
postgres-core: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
ports: | |
# Maps tcp port 5433 on service container to the host | |
- 5433:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name river_postgres_container | |
steps: | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Increase max_connections in Postgres | |
run: | | |
docker exec -i river_postgres_container bash << EOF | |
echo 'max_connections = 1000' >> /var/lib/postgresql/data/postgresql.conf | |
echo 'shared_buffers = 2GB' >> /var/lib/postgresql/data/postgresql.conf | |
EOF | |
docker restart --time 0 river_postgres_container | |
sleep 5 | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Git submodules | |
run: git submodule update --init --recursive | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
# Start an ssh session with tmate if the PR has the 'ssh' label | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: contains(github.event.pull_request.labels.*.name, 'ssh') | |
- name: Start and configure blockchains | |
run: ./scripts/bc-all-start.sh | |
- name: Print Yarn package versions | |
run: yarn info --name-only --all | |
- name: Maintain Turbo cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules/.cache/turbo | |
key: ${{ runner.os }}-turbo-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-turbo- | |
- name: create db | |
run: psql -h localhost -p 5433 -U postgres -f scripts/sql/create_db.sql | |
working-directory: core | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Setup River CA for testing certificates | |
run: ./scripts/register-ca.sh | |
working-directory: core | |
- name: Start node with entitlements | |
run: ./core/node/run_single.sh & | |
- name: Wait for (with entitlements) node to be up | |
run: yarn csb:wait:entitlements | |
- name: Start xchain node with entitlements | |
run: (RUN_ENV=single ./core/xchain/launch_multi.sh &) && sleep 10 | |
- name: Build & Test (with entitlements) | |
run: yarn csb:turbo-no-sdk | |
- name: Run River Tests (with entitlements) | |
run: yarn workspace @river-build/sdk run test:ci:with-entitlements | |
- name: Run Stress Test Tests (yarn) (with entitlements) | |
run: yarn workspace @river-build/stress run test:ci:with-entitlements | |
- name: Run Stress Test Demo (node) (with entitlements) | |
run: ./packages/stress/scripts/localhost_demo.sh | |
- name: Archive River Node Logs and Settings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'river-node-${{ github.job }}' | |
path: | | |
./core/node/run_files/ | |
./core/xchain/run_files/ | |
!./core/**/bin/** | |
Multinode_Ent: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_multinode_ent | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
services: | |
postgres-core: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
ports: | |
# Maps tcp port 5433 on service container to the host | |
- 5433:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name river_postgres_container | |
steps: | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Increase max_connections in Postgres | |
run: | | |
docker exec -i river_postgres_container bash << EOF | |
echo 'max_connections = 1000' >> /var/lib/postgresql/data/postgresql.conf | |
echo 'shared_buffers = 2GB' >> /var/lib/postgresql/data/postgresql.conf | |
EOF | |
docker restart --time 0 river_postgres_container | |
sleep 5 | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Git submodules | |
run: git submodule update --init --recursive | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
# Start an ssh session with tmate if the PR has the 'ssh' label | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: contains(github.event.pull_request.labels.*.name, 'ssh') | |
- name: Start and configure blockchains | |
run: ./scripts/bc-all-start.sh | |
- name: Print Yarn package versions | |
run: yarn info --name-only --all | |
- name: Maintain Turbo cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules/.cache/turbo | |
key: ${{ runner.os }}-turbo-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-turbo- | |
- name: create db | |
run: psql -h localhost -p 5433 -U postgres -f scripts/sql/create_db.sql | |
working-directory: core | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Setup River CA for testing certificates | |
run: ./scripts/register-ca.sh | |
working-directory: core | |
- name: Set up Custom CA Certificate for Node.js | |
run: | | |
echo "NODE_EXTRA_CA_CERTS=$HOME/river-ca-cert.pem" >> $GITHUB_ENV | |
- name: Run multiple nodes | |
run: | | |
cd ./core/node | |
./run_multi.sh -c | |
./run_multi.sh -r & | |
for i in {5170..5179}; do yarn wait-on https://localhost:$i/debug/multi --timeout=900000 --i=5000 --verbose; done | |
- name: Start xchain node with entitlements | |
run: (RUN_ENV=multi ./core/xchain/launch_multi.sh &) && sleep 10 | |
- name: Build & Test (with entitlements) | |
run: yarn csb:turbo-no-sdk | |
- name: Run River Tests (with entitlements) | |
run: yarn workspace @river-build/sdk run test:ci:multi:ent | |
- name: Archive River Node Logs and Settings | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'river-node-${{ github.job }}' | |
path: | | |
./core/node/run_files/ | |
./core/xchain/run_files/ | |
!./core/**/bin/** | |
Go_Tests: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_go | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
services: | |
postgres-core: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
ports: | |
# Maps tcp port 5433 on service container to the host | |
- 5433:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name river_postgres_container | |
steps: | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Increase max_connections in Postgres | |
run: | | |
docker exec -i river_postgres_container bash << EOF | |
echo 'max_connections = 1000' >> /var/lib/postgresql/data/postgresql.conf | |
echo 'shared_buffers = 2GB' >> /var/lib/postgresql/data/postgresql.conf | |
EOF | |
docker restart --time 0 river_postgres_container | |
sleep 5 | |
- name: Show PostgreSQL max_connections | |
run: psql -h localhost -p 5433 -U postgres -c 'SHOW max_connections;' | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Git submodules | |
run: git submodule update --init --recursive | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
# Start an ssh session with tmate if the PR has the 'ssh' label | |
- name: Setup tmate session | |
uses: mxschmitt/action-tmate@v3 | |
if: contains(github.event.pull_request.labels.*.name, 'ssh') | |
- name: Start and configure blockchains | |
run: ./scripts/bc-all-start.sh | |
- name: create db | |
run: psql -h localhost -p 5433 -U postgres -f scripts/sql/create_db.sql | |
working-directory: core | |
env: | |
POSTGRES_PASSWORD: postgres | |
PGPASSWORD: postgres | |
- name: Setup River CA for testing certificates | |
run: ./scripts/register-ca.sh | |
working-directory: core | |
- name: Run node tests | |
run: go test -race -timeout 12m ./... | |
working-directory: core | |
XChain_Integration: | |
permissions: write-all | |
if: github.event_name != 'workflow_dispatch' || !inputs.skip_xchain_integration | |
runs-on: ubuntu-latest-8-cores | |
timeout-minutes: 30 | |
steps: | |
- name: Cancel previous runs | |
if: github.event_name != 'schedule' | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Git submodules | |
run: git submodule update --init --recursive | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.work' | |
cache-dependency-path: '**/*.sum' | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: ${{ env.FOUNDRY_VERSION }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
- name: Install node dependencies | |
run: yarn install --immutable | |
- name: Print versions | |
run: ./scripts/print-versions.sh | |
- name: Start Local Basechain | |
run: ./scripts/start-local-basechain.sh & | |
- name: Print Yarn package versions | |
run: yarn info --name-only --all | |
- name: Maintain Turbo cache | |
uses: actions/cache@v4 | |
with: | |
path: node_modules/.cache/turbo | |
key: ${{ runner.os }}-turbo-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-turbo- | |
- name: Run Integration Tests | |
run: make integration_tests | |
working-directory: core/xchain | |
Slack_Notification: | |
# NOTE: We should make sure that new jobs get added here | |
needs: | |
[ | |
Common_CI, | |
Client_NoEntitlements, | |
Multinode, | |
Client_Entitlements, | |
Multinode_Ent, | |
Go_Tests, | |
XChain_Integration, | |
] | |
if: failure() | |
runs-on: ubuntu-latest | |
steps: | |
- name: Slack notification | |
if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_CI_CHANNEL_WEBHOOK_URL }} | |
SLACK_TITLE: 'Failure' | |
SLACK_USERNAME: 'CI' | |
SLACK_ICON_EMOJI: ':boom:' | |
SLACK_COLOR: '#FF0000' | |
SLACK_MESSAGE: 'CI Failure on ${{ github.repository }} ${{ vars.GOALIE_SLACK_GROUP_ID}}' | |
SLACK_LINK_NAMES: true |