Skip to content

Commit

Permalink
change git runner to dynamic one-off job (#45)
Browse files Browse the repository at this point in the history
  • Loading branch information
PayFv authored Nov 17, 2024
2 parents e52bba7 + 2d0acd6 commit 56c27a3
Showing 1 changed file with 71 additions and 21 deletions.
92 changes: 71 additions & 21 deletions .github/workflows/ci_dev.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,56 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.

name: UnitTest & Publish Image

name: do-the-job
on:
push:
branches:
- dev

jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: self-hosted
start-runner:
name: Start self-hosted EC2 runner
runs-on: ubuntu-latest
outputs:
label: ${{ steps.start-ec2-runner.outputs.label }}
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }}
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Start EC2 runner
id: start-ec2-runner
uses: machulav/[email protected]
with:
mode: start
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
ec2-image-id: ami-0a2d071e715c3a808
ec2-instance-type: c6a.4xlarge
subnet-id: subnet-9aa9c8e1
security-group-id: sg-0c35d2e12fe165fbb
aws-resource-tags: > # optional, requires additional permissions
[
{"Key": "Name", "Value": "ec2-github-runner"},
{"Key": "GitHubRepository", "Value": "${{ github.repository }}"}
]
do-the-job:
name: UnitTest & Build & Publish Image
needs: start-runner # required to start the main job when the runner is ready
runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner
steps:
- name: Hello World1
run: |
echo 'Hello World!'
/root/.cargo/bin/cargo version
- name: Check out the repo
uses: actions/checkout@v3
- name: Log in to Docker Hub

- name: Login to Docker Hub
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
Expand All @@ -37,9 +60,10 @@ jobs:
- name: Checkout submodules
run: git submodule update --init --recursive

- name: Unit Test
run: sudo runuser -f ubuntu -c '/home/ubuntu/.cargo/bin/cargo test test_dkg_secure_net -- --show-output'

- name: Unit Testing
run: |
/root/.cargo/bin/cargo test test_dkg_secure_net -- --show-output
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
Expand All @@ -49,3 +73,29 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
build-args: |
CPU_NUM=16
- name: Bye
run: echo 'Congratulations!'

stop-runner:
name: Stop self-hosted EC2 runner
needs:
- start-runner # required to get output from the start-runner job
- do-the-job # required to wait when the main job is done
runs-on: ubuntu-latest
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Stop EC2 runner
uses: machulav/ec2-github-runner@v2
with:
mode: stop
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
label: ${{ needs.start-runner.outputs.label }}
ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }}

0 comments on commit 56c27a3

Please sign in to comment.