Skip to content

Action Runner Image build dotnet by workflow_run #6766

Action Runner Image build dotnet by workflow_run

Action Runner Image build dotnet by workflow_run #6766

Workflow file for this run

name: "Action Runner Image build"
run-name: "Action Runner Image build ${{ github.ref_name }} by ${{ github.event_name }}"
on:
workflow_dispatch:
push:
branches:
- dotnet
paths:
- "build-image.yml"
- "Dockerfile"
- 'Dockerfile.dotnet'
workflow_run:
workflows: [ BASE build, RELEASE update ]
types: [ completed ]
permissions:
contents: read
packages: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: false
jobs:
pull-build-push:
runs-on: ubuntu-latest
# if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
strategy:
fail-fast: false
matrix:
os:
[ ubuntu-noble-dotnet, ubuntu-noble, ubuntu-jammy, debian-bookworm, debian-bookworm-dotnet ]
include:
- os: ubuntu-noble-dotnet
distro-version: 24.04
distro: ubuntu
codename: noble
docker-codename: noble
dockerfile: Dockerfile.dotnet
- os: ubuntu-noble
distro-version: 24.04
distro: ubuntu
codename: noble
docker-codename: noble
has-latest: true
- os: ubuntu-jammy
distro-version: 22.04
distro: ubuntu
codename: jammy
docker-codename: jammy
- os: debian-bookworm
distro-version: 12
distro: debian
codename: bookworm
docker-codename: bookworm
- os: debian-bookworm-dotnet
distro-version: 12
distro: debian
codename: bookworm
docker-codename: bookworm
env:
RELEASE_IMAGE_NAME: ${{ vars.RELEASE_IMAGE_NAME }}
FULL_TAG: ''
BASE_BUILD_IMAGE: ''
LATEST_FLAG: ''
RELEASE_VERSION: ${{ vars.GH_RUNNER_VERSION }}
REVISION: '${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}'
DOCKERFILE: ''
PREFIX: ''
GIT_AUTHOR: ''
TIMESTAMP: ''
steps:
- name: Copy Repo Files
uses: actions/checkout@v6
- name: Set version by default
shell: pwsh
run: |
$gitCommit = (git rev-parse --short HEAD)
$gitAuthor = (git log -1 --pretty=format:'%an %cd')
$timeStamp = (git log -1 --pretty=%ct)
Write-Output 'PREFIX=${{ matrix.os }}' >> $env:GITHUB_ENV
Write-Output 'FULL_TAG=${{ matrix.os }}-${{ env.RELEASE_VERSION }}-${{ github.RUN_NUMBER }}.${{ github.RUN_ATTEMPT }}' >> $env:GITHUB_ENV
Write-Output 'BASE_BUILD_IMAGE=${{ env.RELEASE_IMAGE_NAME }}-base:${{ matrix.distro }}-${{ matrix.codename }}' >> $env:GITHUB_ENV
Write-Output "GIT_COMMIT=$gitCommit" >> $env:GITHUB_ENV
Write-Output "GIT_AUTHOR=$gitAuthor" >> $env:GITHUB_ENV
Write-Output "TIMESTAMP=$timeStamp" >> $env:GITHUB_ENV
$LatestFlag = ([string]::IsNullOrWhitespace('${{ matrix.has-latest }}') ? 'false' : 'true')
Write-Output "LATEST_FLAG=$LatestFlag" >> $env:GITHUB_ENV
if( [string]::IsNullOrWhitespace('${{ matrix.dockerfile }}') )
{
Write-Output 'DOCKERFILE=Dockerfile' >> $env:GITHUB_ENV
}
else
{
Write-Output 'DOCKERFILE=${{ matrix.dockerfile }}' >> $env:GITHUB_ENV
}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.ACTOR }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
labels: |
org.opencontainers.image.name=${{ github.ACTOR }}/${{ env.RELEASE_IMAGE_NAME }}
org.opencontainers.image.title=${{ github.event.repository.name }}
org.opencontainers.image.version=${{ env.FULL_TAG }}
org.opencontainers.image.base.name=${{ github.ACTOR }}/${{ env.BASE_BUILD_IMAGE }}
org.opencontainers.image.revision=${{ env.REVISION }}
org.opencontainers.image.ref.name=${{ github.ref_name }}
org.opencontainers.image.authors=${{ env.GIT_AUTHOR }}
org.opencontainers.image.created=${{ env.TIMESTAMP }}
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}.git
org.opencontainers.image.documentation=${{ github.server_url }}/${{ github.repository }}/wiki
org.opencontainers.image.vendor=${{ github.repository_owner }}
org.opencontainers.image.description=${{ github.event.repository.name }} ${{ matrix.distro }}-${{ matrix.codename }} ${{ env.GIT_AUTHOR }}
org.opencontainers.image.licenses=MIT
images: |
${{ github.ACTOR }}/${{ env.RELEASE_IMAGE_NAME }}
ghcr.io/${{ github.ACTOR }}/${{ env.RELEASE_IMAGE_NAME }}
flavor: |
latest=false
prefix=
suffix=
tags: |
type=raw,value=${{ env.PREFIX }},enable=true
type=raw,value=${{ env.FULL_TAG }},enable=true
type=raw,value=latest,enable=${{ env.LATEST_FLAG }}
type=raw,value=${{ env.PREFIX }}-latest,enable=${{ env.LATEST_FLAG }}
type=raw,value=${{ env.RELEASE_VERSION }},enable=${{ env.LATEST_FLAG }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ${{ env.DOCKERFILE }}
provenance: true
sbom: true
pull: true
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
attests: type=sbom,generator=image
build-args: |
BASE_IMAGE=${{ github.ACTOR }}/${{ env.BASE_BUILD_IMAGE }}
CHOWN_USER=${{ vars.CHOWN_USER }}
DISTRO=${{ matrix.distro }}
DISTRO_VERSION=${{ matrix.distro-version }}
GH_RUNNER_VERSION=${{ env.RELEASE_VERSION }}
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
platforms: linux/amd64,linux/arm64