This repository has been archived by the owner on Dec 4, 2024. It is now read-only.
fixed ibft tests (#1876) (#1877) #400
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: Ephemeral DevNet Workflow | |
on: # yamllint disable-line rule:truthy | |
workflow_dispatch: | |
push: | |
branches: | |
- develop | |
permissions: | |
id-token: write | |
contents: read | |
security-events: write | |
jobs: | |
snyk: | |
name: Snyk and Publish | |
uses: ./.github/workflows/security.yml | |
secrets: | |
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} | |
SNYK_ORG: ${{ secrets.SNYK_ORG }} | |
build: | |
name: Build | |
uses: ./.github/workflows/build.yml | |
deploy_eph_devnet: | |
name: Deploy Ephemeral DevNet | |
needs: build | |
concurrency: deploy_eph_devnet | |
environment: | |
name: devnet-ephemeral | |
url: https://rpc.us-east-1.deph.testing.psdk.io/ | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Polygon Edge Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: polygon-edge | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v1-node16 | |
with: | |
role-to-assume: ${{ secrets.AWS_ROLE_ARN }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Notify Slack | |
uses: slackapi/[email protected] | |
if: false | |
continue-on-error: true | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_DEPLOYMENT_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | |
with: | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "header", | |
"text": { | |
"type": "plain_text", | |
"text": "Ephemeral Devnet Deployment - Started" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Ephemeral Devnet Deployment Status: ${{ job.status }}\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Job Status>" | |
} | |
} | |
] | |
} | |
- name: Publish Binary package to S3 | |
run: | | |
aws s3 cp ./polygon-edge.tar.gz s3://${{ secrets.POLYGON_EDGE_ARTIFACT_BUCKET }} --metadata "{\"commit_sha\":\"${GITHUB_SHA}\"}" | |
- name: Deploy Ephemeral DevNet | |
continue-on-error: true | |
env: | |
VALIDATOR_ASGS: ${{ secrets.VALIDATOR_ASGS }} | |
run: | | |
# Parallel deploy all nodes, relying on ALB Health Checks | |
echo "Deploying Ephemeral Devnet" | |
echo "--------------------" | |
# Should finish relatively fast. Can add a check to guard against pre-mature cycle | |
echo "Cleaning up the data directories and stopping Polygon-Edge service..." | |
aws ssm send-command --document-name polygon-edge-validators-maintenance-clean-data --targets Key=tag:aws:autoscaling:groupName,Values=$VALIDATOR_ASGS >> /dev/null | |
for vasg in ${VALIDATOR_ASGS//,/ } | |
do | |
instance_id=$(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names $vasg --query 'AutoScalingGroups[0].Instances[0].InstanceId' --output text) | |
echo "Draining $instance_id in $vasg" | |
irid=$(aws autoscaling start-instance-refresh --auto-scaling-group-name $vasg --query InstanceRefreshId --output text) | |
done | |
echo "Waiting for instance to clear health check..." | |
pending=true | |
until [ $pending != true ] | |
do | |
pending=false | |
sleep 10 | |
for vasg in ${VALIDATOR_ASGS//,/ } | |
do | |
refresh_status=$(aws autoscaling describe-instance-refreshes --auto-scaling-group-name $vasg --query 'InstanceRefreshes[0].Status' --output text) | |
echo "ASG: $vasg" | |
echo "Status: $refresh_status" | |
if [ "$refresh_status" == "Successful" ] | |
then | |
VALIDATOR_ASGS=${VALIDATOR_ASGS//$vasg/} | |
instance_id=$(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names $vasg --query 'AutoScalingGroups[0].Instances[0].InstanceId' --output text) | |
echo "-------------------------------------------------" | |
echo "New validator: $instance_id successfully deployed" | |
echo "-------------------------------------------------" | |
fi | |
pending=true | |
done | |
echo "" | |
done | |
echo "Ephemeral Devnet Deployment Complete" | |
- name: Notify Slack - Failures | |
uses: slackapi/[email protected] | |
if: ${{ job.status != 'success' }} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_DEPLOYMENT_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | |
with: | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "header", | |
"text": { | |
"type": "plain_text", | |
"text": "Ephemeral Devnet Deployment - Failed" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Job Status>" | |
} | |
}, | |
{ | |
"type": "divider" | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Commit SHA: <${{ github.server_url }}/${{ github.repository }}/tree/${{ github.sha }}|${{ github.sha }}>\nBranch: <${{ github.server_url }}/${{ github.repository }}/tree/${{ github.ref_name }}|${{ github.ref_name}}>" | |
} | |
} | |
] | |
} | |
loadtest: | |
needs: deploy_eph_devnet | |
uses: ./.github/workflows/loadtest.yml | |
name: Load Test | |
secrets: | |
SLACK_PERFORMANCE_WEBHOOK_URL: ${{ secrets.SLACK_PERFORMANCE_WEBHOOK_URL }} | |
LOADTEST_RPC_URL: ${{ secrets.LOADTEST_RPC_URL }} | |
DD_API_KEY: ${{ secrets.DD_API_KEY }} | |
LOADTEST_MNEMONIC: ${{ secrets.LOADTEST_MNEMONIC }} | |
with: | |
runner: devnet | |
environment: devnet-ephemeral | |
scenario: multiple_EOA | |
loadtestERC20: | |
needs: loadtest | |
uses: ./.github/workflows/loadtest.yml | |
name: Load Test | |
secrets: | |
SLACK_PERFORMANCE_WEBHOOK_URL: ${{ secrets.SLACK_PERFORMANCE_WEBHOOK_URL }} | |
LOADTEST_RPC_URL: ${{ secrets.LOADTEST_RPC_URL }} | |
DD_API_KEY: ${{ secrets.DD_API_KEY }} | |
LOADTEST_MNEMONIC: ${{ secrets.LOADTEST_MNEMONIC }} | |
with: | |
runner: devnet | |
environment: devnet-ephemeral | |
scenario: multiple_ERC20 |