Skip to content

chore(main): release sharing-smart-contracts 2.0.0-beta.20 #127

chore(main): release sharing-smart-contracts 2.0.0-beta.20

chore(main): release sharing-smart-contracts 2.0.0-beta.20 #127

name: Sharing Smart Contract - Default
on:
pull_request:
branches:
- '*'
paths:
- 'packages/sharing-smart-contract/**'
workflow_call:
inputs:
node-version:
description: Node.js version to use
required: false
type: number
default: 20
jobs:
build-and-test:
runs-on: ubuntu-latest
permissions:
security-events: write # Required for SARIF upload.
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
cache: 'npm'
cache-dependency-path: 'packages/sharing-smart-contract'
- name: Install Dependencies
working-directory: packages/sharing-smart-contract
run: npm ci
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: stable
cache: true
- name: Compile
working-directory: packages/sharing-smart-contract
run: npm run compile
- name: Check Format
working-directory: packages/sharing-smart-contract
run: npm run check-format
- name: Check Lint
working-directory: packages/sharing-smart-contract
run: npm run lint
- name: UML Diagrams
working-directory: packages/sharing-smart-contract
run: npm run uml
- name: Static Analyzer
uses: crytic/[email protected]
id: slither
with:
target: 'packages/sharing-smart-contract/'
slither-args: --checklist --markdown-root ${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/
fail-on: none
sarif: result.sarif
- name: Start Anvil
run: |
anvil --host 0.0.0.0 --port 8545 --hardfork berlin --fork-url https://bellecour.iex.ec --chain-id 134 --gas-limit 6700000 --gas-price 0 &
- name: Wait for Anvil to start
run: |
timeout=30
interval=1
echo "Waiting for Anvil to start..."
for ((i=0; i<timeout; i++)); do
if nc -z localhost 8545; then
echo "Anvil is operational."
exit 0
fi
echo "Attempt $((i+1)) of $timeout: Anvil is not ready, waiting ${interval}s..."
sleep $interval
done
echo "Error: Anvil did not start within the timeout period."
exit 1
- name: Upgrade test
working-directory: packages/sharing-smart-contract
env:
DATA_PROTECTOR_SHARING_ADDRESS: '0x1390c3c6a545198809F1C7c5Dd2600ef74D60925'
ADD_ONLY_APP_WHITELIST_REGISTRY_ADDRESS: '0x498D324F711b8998Be81818742e268dEE30347c6'
run: npm run upgrade-local-fork -- --network local-bellecour-fork
# TODO check why the CI does not fail when the following error occurs
# (when the RPC node is not available):
# 1) Uncaught error outside test suite
- name: Hardhat tests
working-directory: packages/sharing-smart-contract
run: npm run test -- --network local-bellecour-fork
- name: Test deployment script
working-directory: packages/sharing-smart-contract
run: |
POCO_ADDRESS=0x3eca1B216A7DF1C7689aEb259fFB83ADFB894E7f \
DATASET_REGISTRY_ADDRESS=0x799DAa22654128d0C64d5b79eac9283008158730 \
npm run deploy -- --network local-bellecour-fork
- name: Set Directory Permissions
working-directory: packages/sharing-smart-contract
run: sudo chmod -R 777 .
- name: Forge Tests
working-directory: packages/sharing-smart-contract
run: forge test --no-match-test "invariant" -vvvv
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ${{ steps.slither.outputs.sarif }}