Skip to content

Fix IBFT E2E tests (#1960) #458

Fix IBFT E2E tests (#1960)

Fix IBFT E2E tests (#1960) #458

---
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/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": "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/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": "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