diff --git a/.github/workflows/start_ec2_environments.yml b/.github/workflows/start_ec2_environments.yml new file mode 100644 index 0000000..5f5999e --- /dev/null +++ b/.github/workflows/start_ec2_environments.yml @@ -0,0 +1,29 @@ +name: Start EC2 Instances + +on: + schedule: + # Runs "At 06:00 AM IST on Moday-Friday. Below time is mentioned in UTC time zone" (see https://crontab.guru) + - cron: '30 00 * * 1-5' + workflow_dispatch: + +jobs: + start-instances: + runs-on: ubuntu-latest + strategy: + matrix: + instance: ['bahmni-standard-docker'] + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.BAHMNI_AWS_ID }} + aws-secret-access-key: ${{ secrets.BAHMNI_AWS_SECRET }} + aws-region: ap-south-1 + role-to-assume: ${{ secrets.BAHMNI_INFRA_ADMIN_ROLE }} + role-duration-seconds: 1200 # 20 mins + role-session-name: BahmniInfraAdminSession + + - name: Start Environments + run: | + INSTANCE_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=${{ matrix.instance }}" --query "Reservations[].Instances[].InstanceId" --output text) + aws ec2 start-instances --instance-ids ${INSTANCE_ID} > /dev/null 2>&1 \ No newline at end of file diff --git a/.github/workflows/stop_ec2_environments.yml b/.github/workflows/stop_ec2_environments.yml new file mode 100644 index 0000000..ee7de4e --- /dev/null +++ b/.github/workflows/stop_ec2_environments.yml @@ -0,0 +1,29 @@ +name: Stop EC2 Instances + +on: + schedule: + # Runs "At 09:00 PM IST on Moday-Friday. Below time is mentioned in UTC time zone" (see https://crontab.guru) + - cron: '30 15 * * 1-5' + workflow_dispatch: + +jobs: + stop-instances: + runs-on: ubuntu-latest + strategy: + matrix: + instance: ['bahmni-standard-docker'] + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.BAHMNI_AWS_ID }} + aws-secret-access-key: ${{ secrets.BAHMNI_AWS_SECRET }} + aws-region: ap-south-1 + role-to-assume: ${{ secrets.BAHMNI_INFRA_ADMIN_ROLE }} + role-duration-seconds: 1200 # 20 mins + role-session-name: BahmniInfraAdminSession + + - name: Stop Environments + run: | + INSTANCE_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=${{ matrix.instance }}" --query "Reservations[].Instances[].InstanceId" --output text) + aws ec2 stop-instances --instance-ids ${INSTANCE_ID} > /dev/null 2>&1 \ No newline at end of file