v2 build command / CI fixes #1146
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: CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- 'master' | |
pull_request: | |
branches: | |
- '**' | |
types: [opened, synchronize] | |
schedule: | |
- cron: '0 0 * * *' | |
concurrency: | |
group: build-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
NODE_VERSION: '18.19.0' | |
OIDC_PROVIDER: projects/198945073119/locations/global/workloadIdentityPools/prj-polygonlabs-pos-v1-dev/providers/oi-prj-polygonlabs-pos-v1-dev | |
OIDC_SERVICE_ACCOUNT: prj-polygonlabs-pos-v1-dev-sa@prj-polygonlabs-pos-v1-dev.iam.gserviceaccount.com | |
OIDC_PROJECT_ID: prj-polygonlabs-pos-v1-dev | |
jobs: | |
lint: | |
name: Prettier and Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: matic-cli | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Install npm dependencies | |
working-directory: matic-cli | |
run: npm install --prefer-offline --no-audit --progress=false | |
- name: Run prettier | |
working-directory: matic-cli | |
run: npm run prettier:check | |
- name: Run lint | |
working-directory: matic-cli | |
run: npm run lint:check | |
e2e-remote: | |
permissions: | |
id-token: write | |
contents: write | |
if: (github.event.action != 'closed' || github.event.pull_request.merged == true) | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] # list of os: https://github.com/actions/virtual-environments | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: matic-cli | |
- uses: boonya/gh-action-name-generator@v1 | |
id: generator | |
with: | |
length: 2 | |
style: lowerCase | |
- name: Create .env file | |
working-directory: matic-cli | |
env: | |
GITHUB_HEAD_REF: ${{ github.head_ref || github.ref_name }} | |
run: | | |
cp .env.example .env | |
sed -i 's,polygon-user,${{steps.generator.outputs.name}},' .env | |
sed -i 's,gcp-key,matic-cli-ci-key,' .env | |
sed -i 's,/absolute/path/to/your/,/home/runner/work/matic-cli/matic-cli/matic-cli/gcp/,' .env | |
sed -i 's,YOUR_PROJECT_ID,prj-polygonlabs-pos-v1-dev,' .env | |
sed -i 's,MATIC_CLI_BRANCH=master,MATIC_CLI_BRANCH=$GITHUB_HEAD_REF,' .env | |
- name: Get GitHub action runner IP | |
id: ip | |
uses: haythem/[email protected] | |
- name: Create secret.tfvars | |
working-directory: matic-cli | |
run: | | |
touch secret.tfvars | |
echo "SG_CIDR_BLOCKS=[\"${{ steps.ip.outputs.ipv4 }}/32\"]" >> secret.tfvars | |
- name: Authenticate with GCP via OIDC | |
id: auth | |
uses: google-github-actions/auth@v2 | |
with: | |
token_format: access_token | |
workload_identity_provider: ${{ env.OIDC_PROVIDER }} | |
service_account: ${{ env.OIDC_SERVICE_ACCOUNT }} | |
project_id: ${{ env.OIDC_PROJECT_ID }} | |
- name: Set up GCP SDK | |
uses: 'google-github-actions/setup-gcloud@v2' | |
- name: Create gcp key pair | |
working-directory: matic-cli | |
run: | | |
mkdir gcp | |
cd gcp | |
ssh-keygen -t ed25519 -f ./matic-cli-ci-key | |
chmod 700 matic-cli-ci-key | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Install npm dependencies | |
working-directory: matic-cli | |
run: npm install --prefer-offline --no-audit --progress=false | |
- name: Init devnet | |
working-directory: matic-cli | |
run: ./bin/express-cli.js --init gcp | |
- name: Start devnet | |
working-directory: matic-cli/deployments/devnet-1 | |
run: | | |
../../bin/express-cli.js --start | |
- name: Run stateSynced and checkpoint tests | |
working-directory: matic-cli/deployments/devnet-1 | |
run: | | |
../../bin/express-cli.js --send-state-sync | |
timeout 20m ../../bin/express-cli.js --monitor exit | |
- name: Run smart contracts events tests | |
working-directory: matic-cli/deployments/devnet-1 | |
run: | | |
timeout 5m ../../bin/express-cli.js --send-staked-event 1 | |
timeout 5m ../../bin/express-cli.js --send-stakeupdate-event 1 | |
timeout 5m ../../bin/express-cli.js --send-topupfee-event 1 | |
timeout 15m ../../bin/express-cli.js --send-unstakeinit-event 1 | |
- name: Destroy devnet | |
if: always() | |
working-directory: matic-cli/deployments/devnet-1 | |
run: | | |
echo "Running --destroy" | |
../../bin/express-cli.js --destroy | |
e2e-docker: | |
permissions: | |
id-token: write | |
contents: write | |
if: (github.event.action != 'closed' || github.event.pull_request.merged == true) | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] # list of os: https://github.com/actions/virtual-environments | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: matic-cli | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: 1.22.x | |
- name: Install dependencies on Linux | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt update | |
sudo apt install build-essential | |
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash | |
sudo snap install solc | |
sudo apt install python2 jq curl | |
sudo ln -sf /usr/bin/python2 /usr/bin/python | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
- name: Bootstrap devnet | |
run: | | |
cd matic-cli | |
npm install --prefer-offline --no-audit --progress=false | |
mkdir devnet | |
cd devnet | |
../bin/matic-cli.js setup devnet -c ../../matic-cli/.github/e2e-docker-config.yml | |
- name: Launch devnet | |
run: | | |
cd matic-cli/devnet | |
bash docker_devnet.sh | |
cd - | |
timeout 2m bash matic-cli/.github/integration-tests/bor_health.sh | |
- name: Run smoke tests | |
run: | | |
echo "Funding anvil accounts..." | |
timeout 10m bash matic-cli/.github/integration-tests/fund_anvil_accounts.sh | |
echo "Deposit 100 matic for each account to bor network" | |
cd matic-cli/devnet/code/pos-contracts | |
CONTRACT_ADDRESS=$(jq -r .root.tokens.MaticToken contractAddresses.json) | |
cd ../../devnet | |
SCRIPT_ADDRESS=$(jq -r '.[0].address' signer-dump.json) | |
SCRIPT_PRIVATE_KEY=$(jq -r '.[0].priv_key' signer-dump.json) | |
cd ../code/pos-contracts | |
forge script scripts/matic-cli-scripts/Deposit.s.sol:MaticDeposit --rpc-url http://localhost:9545 --private-key $SCRIPT_PRIVATE_KEY --broadcast --sig "run(address,address,uint256)" $SCRIPT_ADDRESS $CONTRACT_ADDRESS 100000000000000000000 | |
cd ../../../.. | |
timeout 120m bash matic-cli/.github/integration-tests/smoke_test.sh | |
- name: Upload logs | |
if: always() | |
uses: actions/[email protected] | |
with: | |
name: logs_${{ github.run_id }} | |
path: | | |
matic-cli/devnet/logs | |
- name: Package code and chain data | |
if: always() | |
run: | | |
cd matic-cli/devnet | |
docker compose down --remove-orphans | |
cd - | |
mkdir -p ${{ github.run_id }}/matic-cli | |
sudo mv matic-cli/devnet ${{ github.run_id }}/matic-cli | |
sudo tar czf code.tar.gz ${{ github.run_id }} | |
- name: Upload code and chain data | |
if: always() | |
uses: actions/[email protected] | |
with: | |
name: code_${{ github.run_id }} | |
path: code.tar.gz |