Skip to content

Resize Deployment Server #2

Resize Deployment Server

Resize Deployment Server #2

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