Files
romm/.github/workflows/test-build.yml
Georges-Antoine Assi da7658a4aa Clarify GHCR-only preview build PR comment
Rename the comment step to reflect that PR builds only push to GHCR,
add a note explaining the hardcoded registry, and inline the image
string into the updateComment call.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 10:26:30 -04:00

125 lines
4.0 KiB
YAML

name: Build Experimental Docker Image
on:
pull_request:
types: [labeled]
workflow_dispatch:
inputs:
# trunk-ignore(checkov/CKV_GHA_7)
branch:
description: "Git branch"
required: true
registry:
description: "Container registry"
required: true
default: "ghcr"
type: choice
options:
- ghcr
- dockerhub
- both
permissions:
id-token: write
contents: write
packages: write
actions: write
pull-requests: write
jobs:
build:
if: |
github.event_name == 'workflow_dispatch' ||
contains(github.event.pull_request.labels.*.name, 'build-preview')
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
packages: write
pull-requests: write
env:
USE_GHCR: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.registry == 'ghcr' || github.event.inputs.registry == 'both' }}
USE_DOCKERHUB: ${{ github.event_name == 'workflow_dispatch' && (github.event.inputs.registry == 'dockerhub' || github.event.inputs.registry == 'both') }}
steps:
- name: Run only once per workflow
run: echo "Triggered by ${{ github.event_name }}"
- name: Checkout code
uses: actions/checkout@v4.3.0
with:
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.branch || github.head_ref }}
fetch-depth: 0
- name: PR comment build starting
if: github.event_name == 'pull_request'
id: build-comment
uses: actions/github-script@v7
with:
script: |
const comment = await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `🔨 Preview build is under way...`
});
core.setOutput('comment-id', comment.data.id);
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.6.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.11.1
- name: Login to GHCR
if: env.USE_GHCR == 'true'
uses: docker/login-action@v3.5.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
if: env.USE_DOCKERHUB == 'true'
uses: docker/login-action@v3.5.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Generate Docker metadata
id: meta
uses: docker/metadata-action@v5.8.0
with:
images: |
${{ env.USE_GHCR == 'true' && format('name=ghcr.io/{0}/romm-testing', github.repository_owner) || '' }}
${{ env.USE_DOCKERHUB == 'true' && format('name={0}/romm-testing', github.repository_owner) || '' }}
tags: |
type=raw,value=${{ github.event_name == 'workflow_dispatch' && github.event.inputs.branch || github.head_ref }}
- name: Build full image
id: build-full
uses: docker/build-push-action@v6.18.0
with:
file: docker/Dockerfile
context: .
push: true
platforms: linux/arm64,linux/amd64
tags: ${{ steps.meta.outputs.tags }}
target: full-image
# PR builds always push to GHCR only, so the image link is hardcoded to GHCR.
- name: Comment PR with GHCR image link
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
env:
HEAD_REF: ${{ github.head_ref }}
with:
script: |
const owner = context.repo.owner;
const tag = process.env.HEAD_REF;
github.rest.issues.updateComment({
comment_id: ${{ steps.build-comment.outputs.comment-id }},
owner: owner,
repo: context.repo.repo,
body: `✅ Preview build completed!\n\nDocker image: \`ghcr.io/${owner}/romm-testing:${tag}\``
})