Fork manager handlers precedence (#1878) #578
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: 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_devnet: | |
name: Deploy DevNet | |
needs: build | |
concurrency: deploy_devnet | |
environment: | |
name: devnet | |
url: https://rpc.us-east-1.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/slack-github-action@v1.23.0 | |
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": "Devnet Deployment - Started" | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "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 DevNet | |
continue-on-error: true | |
env: | |
VALIDATOR_ASGS: ${{ secrets.VALIDATOR_ASGS }} | |
run: | | |
# Parallel deploy all nodes, relying on ALB Health Checks | |
echo "Deploying new 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 Devnet 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 "Devnet Deployment Complete" | |
- name: Notify Slack - Failures | |
uses: slackapi/slack-github-action@v1.23.0 | |
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": "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_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 | |
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 | |
scenario: multiple_ERC20 |