-
-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Labels
exampleExample GitHub ActionExample GitHub Action
Description
This GitHub Action example workflow automates the creation of a GitHub Actions Runner on Hetzner Cloud, builds a Container image with Podman using that runner, and then automatically deletes the runner to avoid unnecessary costs. It utilizes the Cyclenerd/hcloud-github-runner
GitHub Action for managing the runner lifecycle and leverages the podman build
command for efficient image building and pushing to the GitHub Container Registry.
Image used: rocky-9
Rocky Linux 9
name: "Podman"
on:
workflow_dispatch:
jobs:
create-runner:
name: Create Runner
runs-on: ubuntu-24.04
outputs:
label: ${{ steps.create-runner.outputs.label }}
server_id: ${{ steps.create-runner.outputs.server_id }}
steps:
- name: Create runner
id: create-runner
uses: Cyclenerd/hcloud-github-runner@v1
with:
mode: create
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
hcloud_token: ${{ secrets.HCLOUD_TOKEN }}
server_type: cx22
# Use Rocky Linux 9 base image
image: rocky-9
# Install Podman
pre_runner_script: |
dnf install podman -y
# Add SSH key to disable root password generation and email notifications
# ssh_key: 123
build:
name: Build Image
needs:
- create-runner # required to get output from the create-runner job
runs-on: ${{ needs.create-runner.outputs.label }}
steps:
- name: Checkout 🛎️
uses: actions/checkout@v4
- name: Login to GitHub container registry 🏭
# https://docs.docker.com/reference/cli/docker/login/
run: podman login ghcr.io -u "${{ github.repository_owner }}" -p "${{ secrets.github_token }}"
- name: Build Container image 🧪
# Replace "ghcr.io/cyclenerd/hcloud-github-runner:example"
run: |
podman build . \
--file "Dockerfile" \
--tag "ghcr.io/cyclenerd/hcloud-github-runner:example"
- name: Push Container image 📤
# Replace "ghcr.io/cyclenerd/hcloud-github-runner:example"
run: podman push "ghcr.io/cyclenerd/hcloud-github-runner:example"
delete-runner:
name: Delete Runner
needs:
- create-runner # required to get output from the create-runner job
- build # required to wait when the main job is done
runs-on: ubuntu-24.04
if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs
steps:
- name: Delete runner
uses: Cyclenerd/hcloud-github-runner@v1
with:
mode: delete
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
hcloud_token: ${{ secrets.HCLOUD_TOKEN }}
name: ${{ needs.create-runner.outputs.label }}
server_id: ${{ needs.create-runner.outputs.server_id }}
michelm117 and dwydler
Metadata
Metadata
Assignees
Labels
exampleExample GitHub ActionExample GitHub Action