Skip to content

Build and Push ARM64 Runner Image #82

Build and Push ARM64 Runner Image

Build and Push ARM64 Runner Image #82

Workflow file for this run

name: Build and Push ARM64 Runner Image
on:
workflow_dispatch:
push:
branches:
- master
schedule:
- cron: '0 0 * * *' # Daily at midnight UTC
env:
DOCKERHUB_IMAGE: leogomide/gha-runner
jobs:
# determine-runner:
# runs-on: ubuntu-latest
# environment: default
# outputs:
# runner: ${{ steps.set-runner.outputs.use-runner }}
# steps:
# - name: Determine which runner to use
# id: set-runner
# uses: jimmygchen/runner-fallback-action@v0.1.1
# with:
# primary-runner: "self-hosted"
# fallback-runner: "ubuntu-latest"
# github-token: ${{ secrets.YOUR_GITHUB_TOKEN }}
build-arm64:
# needs: determine-runner
# runs-on: ${{ fromJson(needs.determine-runner.outputs.runner) }}
runs-on: "ubuntu-latest"
environment: default
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get latest runner version
id: runner-version
run: |
LATEST_VERSION=$(curl -s https://api.github.com/repos/actions/runner/releases/latest | jq -r .tag_name)
VERSION_NUMBER=$(echo "$LATEST_VERSION" | sed 's/^v//')
echo "version=$VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "tag=$LATEST_VERSION" >> $GITHUB_OUTPUT
echo "Latest runner version: $LATEST_VERSION"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: |
${{ env.DOCKERHUB_IMAGE }}
tags: |
type=raw,value=${{ steps.runner-version.outputs.version }}-arm64
type=raw,value=latest-arm64
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
RUNNER_VERSION=${{ steps.runner-version.outputs.version }}
TARGETARCH=arm64
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Generate summary
run: |
echo "## Build Summary" >> $GITHUB_STEP_SUMMARY
echo "- **Architecture**: arm64 (linux/arm64)" >> $GITHUB_STEP_SUMMARY
echo "- **Runner Version**: ${{ steps.runner-version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
echo "- **Image Tags**:" >> $GITHUB_STEP_SUMMARY
echo " - \`${{ env.DOCKERHUB_IMAGE }}:${{ steps.runner-version.outputs.version }}-arm64\`" >> $GITHUB_STEP_SUMMARY
echo " - \`${{ env.DOCKERHUB_IMAGE }}:latest-arm64\`" >> $GITHUB_STEP_SUMMARY