Skip to content

AWS EC2 GitHub Runner Workflow #20

AWS EC2 GitHub Runner Workflow

AWS EC2 GitHub Runner Workflow #20

name: AWS EC2 GitHub Runner Workflow
on:
workflow_dispatch:
inputs:
ami_id:
description: 'AWS Machine Image ID'
required: false
default: 'ami-0e83be366243f524a'
instance_type:
description: 'AWS EC2 Instance Type'
required: false
default: 't2.micro'
env:
AWS_REGION: ${{ secrets.AWS_REGION }}
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SECURITY_GROUP_ID: ${{ secrets.AWS_SECURITY_GROUP_ID }}
GITHUB_REPO: ${{ github.repository }}
AMI_ID: ${{ github.event.inputs.ami_id }}
INSTANCE_TYPE: ${{ github.event.inputs.instance_type }}
jobs:
setup-runner:
runs-on: ubuntu-latest
outputs:
instance_id: ${{ steps.setup_script.outputs.instance_id }}
runner_name: ${{ steps.setup_script.outputs.runner_name }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install aws cli
run: |
sudo apt-get update
sudo apt-get install -y python3-pip bc
sudo pip3 install awscli
- name: Run Setup Script
id: setup_script
run: |
script/setup-ec2-runner.sh create
test:
needs: setup-runner
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Run Tests
run: |
export INSTANCE_ID=${{ needs.setup-runner.outputs.instance_id }}
echo "Running tests on self-hosted runner with instance $INSTANCE_ID"
uname -a # or any other command
destroy-runner:
if: always()
needs: [setup-runner, test]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Unregister GitHub Runner
run: |
export RUNNER_NAME=${{ needs.setup-runner.outputs.runner_name }}
# Unregister runner commands
./script/setup-ec2-runner.sh unregister $RUNNER_NAME
- name: Terminate EC2 Instance
run: |
export INSTANCE_ID=${{ needs.setup-runner.outputs.instance_id }}
# Terminate EC2 instance commands
./script/setup-ec2-runner.sh terminate $INSTANCE_ID