Resize Deployment Server #2
This file contains hidden or 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: Resize Deployment Server | |
| # Resize the release-tools deployment server | |
| # during releases. | |
| # | |
| # Boost Releases occur three time per year. | |
| # Before betas and release, increase the size of the deployment | |
| # server so publish_release.py will have more CPU. | |
| # | |
| # See initial setup instructions at the end of this file. | |
| # | |
| on: | |
| workflow_dispatch: | |
| # Runs on Wednesday at 1:00am, on certain months. | |
| schedule: | |
| - cron: "0 1 * 3 3" | |
| - cron: "0 1 * 4 3" | |
| - cron: "0 1 * 7 3" | |
| - cron: "0 1 * 8 3" | |
| - cron: "0 1 * 11 3" | |
| - cron: "0 1 * 12 3" | |
| jobs: | |
| scale-deploy-server: | |
| runs-on: ubuntu-latest | |
| container: amazon/aws-cli:2.32.19 | |
| name: Scale | |
| env: | |
| AWS_ACCESS_KEY_ID: ${{ secrets.DEPLOY_AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.DEPLOY_AWS_SECRET_ACCESS_KEY }} | |
| if: github.repository == 'boostorg/release-tools' | |
| steps: | |
| - name: Debug | |
| run: | | |
| set -xe | |
| pwd | |
| whoami | |
| aws --version | |
| echo "github.event_name is ${{ github.event_name }}" | |
| - name: Get number of Wednesday on a Wednesday | |
| id: number-of-wednesday-on-a-wednesday | |
| run: >- | |
| printf >> "$GITHUB_OUTPUT" | |
| "VALUE=%s" | |
| "$((($(date +%-d)-1)/7+1))" | |
| - name: Resize Instance | |
| if: ${{ ( steps.number-of-wednesday-on-a-wednesday.outputs.VALUE == 2 && github.event_name == 'schedule' ) || ( github.event_name == 'workflow_dispatch' ) }} | |
| run: | | |
| aws ssm start-automation-execution --document-name "AWS-ResizeInstance" --document-version "\$DEFAULT" --parameters '{"InstanceId":["${{ secrets.DEPLOY_INSTANCE_ID }}"],"InstanceType":["c8a.xlarge"],"SleepWait":["PT5S"]}' --region ${{ secrets.DEPLOY_REGION }} | |
| # Initial Setup Instructions | |
| # | |
| # In AWS, create an instance. Install packages. | |
| # In AWS IAM, create a user, api keys, assign policies. | |
| # Assign policies to the user: EC2-Resize and AmazonSSMFullAccess(managed). | |
| # Create the policy EC2-Resize: | |
| # { | |
| # "Version": "2012-10-17", | |
| # "Statement": [ | |
| # { | |
| # "Sid": "Stmt1471613026000", | |
| # "Effect": "Allow", | |
| # "Action": [ | |
| # "ec2:ModifyInstanceAttribute" | |
| # ], | |
| # "Resource": "arn:aws:ec2:_region_:_account_:instance/_instance-id_, | |
| # "Condition": { | |
| # "StringEquals": { | |
| # "ec2:Attribute": "InstanceType" | |
| # } | |
| # } | |
| # }, | |
| # { | |
| # "Effect": "Allow", | |
| # "Action": [ | |
| # "ec2:DescribeInstances" | |
| # ], | |
| # "Resource": "*" | |
| # }, | |
| # { | |
| # "Effect": "Allow", | |
| # "Action": [ | |
| # "ec2:StartInstances", | |
| # "ec2:StopInstances" | |
| # ], | |
| # "Resource": "arn:aws:ec2:_region_:_account_:instance/_instance-id_, | |
| # } | |
| # ] | |
| # } | |
| # | |
| # Fill in _region_, _account_, and _instance-id_. | |
| # | |
| # Add github actions secrets: | |
| # | |
| # DEPLOY_INSTANCE_ID | |
| # DEPLOY_REGION | |
| # DEPLOY_AWS_ACCESS_KEY_ID | |
| # DEPLOY_AWS_SECRET_ACCESS_KEY |