CI #830
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: | |
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' | |
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 | |
- 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,YOUR_IDENTIFIER,matic-cli-ci,' .env | |
sed -i 's,aws-key,matic-cli-ci-key,' .env | |
sed -i 's,/absolute/path/to/your/,/home/runner/work/matic-cli/matic-cli/matic-cli/aws/,' .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: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@master | |
with: | |
aws-region: eu-west-1 | |
role-to-assume: arn:aws:iam::${{ secrets.ACCOUNT_ID }}:role/MaticCLIGitHubActionsRole | |
role-session-name: GithubActionsSession | |
- name: Create aws key pair | |
working-directory: matic-cli | |
run: | | |
mkdir aws | |
cd aws | |
aws ec2 create-key-pair --key-name matic-cli-ci-key --key-type rsa --key-format pem --query "KeyMaterial" --output text > matic-cli-ci-key.pem | |
chmod 700 matic-cli-ci-key.pem | |
- 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 aws | |
- name: Start devnet | |
working-directory: matic-cli/deployments/devnet-1 | |
run: | | |
ls -la | |
../../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 10m ../../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 | |
- name: Delete aws key pair | |
if: always() | |
working-directory: matic-cli/aws | |
run: aws ec2 delete-key-pair --key-name matic-cli-ci-key | |
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: 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-ganache-start.sh | |
bash docker-heimdall-start-all.sh | |
bash docker-bor-setup.sh | |
bash docker-bor-start-all.sh | |
cd - | |
timeout 2m bash matic-cli/.github/integration-tests/bor_health.sh | |
cd - | |
bash ganache-deployment-bor.sh | |
bash ganache-deployment-sync.sh | |
- name: Run smoke tests | |
run: | | |
echo "Funding ganache accounts..." | |
timeout 10m bash matic-cli/.github/integration-tests/fund_ganache_accounts.sh | |
echo "Deposit 100 matic for each account to bor network" | |
cd matic-cli/devnet/code/contracts | |
npm run truffle exec scripts/deposit.js -- --network development $(jq -r .root.tokens.MaticToken contractAddresses.json) 100000000000000000000 | |
cd - | |
timeout 60m bash matic-cli/.github/integration-tests/smoke_test.sh | |
- name: Upload logs | |
if: always() | |
uses: actions/upload-artifact@v3 | |
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/upload-artifact@v3 | |
with: | |
name: code_${{ github.run_id }} | |
path: code.tar.gz |