Skip to content

[DO NOT MERGE] chore: update GitHub Actions workflows for UBI 9 and UBI 10 images#252

Open
dkwon17 wants to merge 3 commits intomainfrom
fix/docker-buildx-publish
Open

[DO NOT MERGE] chore: update GitHub Actions workflows for UBI 9 and UBI 10 images#252
dkwon17 wants to merge 3 commits intomainfrom
fix/docker-buildx-publish

Conversation

@dkwon17
Copy link
Copy Markdown
Collaborator

@dkwon17 dkwon17 commented Apr 14, 2026

This PR is created in order to run the gh workflows. The original PR is: #250

Summary by CodeRabbit

  • Chores
    • Replaced manual multi-arch manifest steps with a single multi-arch publish/inspect command in CI, simplifying and standardizing image publication for PR and release builds.
    • Exposed a publish job output to surface the generated unique image tag to calling workflows.
    • Switched to a more robust download command and corrected architecture mapping in the universal image build.

@dkwon17 dkwon17 requested review from SDawley and svor as code owners April 14, 2026 18:30
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Apr 14, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dkwon17

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 14, 2026

📝 Walkthrough

Walkthrough

Simplifies multi-architecture image publishing across GitHub workflows by replacing manual docker manifest sequences with docker buildx imagetools create/inspect, removes per-arch manifest checks and digest extraction, and applies a small Dockerfile change switching wgetcurl for Lombok and correcting Go arch mapping for ppc64le.

Changes

Cohort / File(s) Summary
PR Check Workflows
\.github/workflows/pr-check.yaml, \.github/workflows/pr-check-ubi10.yaml
Removed per-arch docker manifest inspect and jq digest extraction plus docker manifest create/annotate/push. Replaced with docker buildx imagetools create to assemble multi-arch tag and docker buildx imagetools inspect to verify.
Build Workflows
\.github/workflows/ubi9-build.yaml, \.github/workflows/ubi10-build.yaml
Replaced manual manifest create/annotate/push with docker buildx imagetools create per tag for base-developer-image and universal-developer-image. UBI10 workflow also exposes publish-udi.outputs.uniq_tag mapped from steps.setTagName.
Dockerfile
universal/ubi10/Dockerfile
Replaced wget with curl -fsSL to download Lombok and corrected Go architecture mapping for TARGETARCH=ppc64le to set GO_ARCH="ppc64le" (affects chosen Go binary).

Sequence Diagram(s)

sequenceDiagram
  participant GH as GitHub Actions
  participant BX as docker buildx imagetools
  participant REG as Container Registry
  GH->>BX: run `imagetools create -t registry/...:tag` with per-arch image refs
  BX->>REG: read per-arch image manifests (amd64/arm64/ppc64le)
  BX->>REG: create and push multi-arch image index `:tag`
  GH->>BX: run `imagetools inspect registry/...:tag`
  BX->>GH: return multi-arch index metadata (manifest list / digests)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I nibbled at manifests, snipped the old glue,
imagetools create stitched arches in two-two-two.
Curl fetched my Lombok, the Go arch now true,
One hop, one push — the rabbit's work is through! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately describes the main change: updating GitHub Actions workflows for UBI 9 and UBI 10 images, which is the primary focus across all modified workflow files and the Dockerfile.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/docker-buildx-publish

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/ubi10-build.yaml:
- Around line 152-153: The workflow defines a job output named uniq_tag
(outputs.uniq_tag from step setTagName) but callers incorrectly reference
jobs.publish-udi.outputs.setTagName.uniq_tag; update any callers to reference
the job output by name instead — e.g., use jobs.publish-udi.outputs.uniq_tag
(remove the step id in the reference) so the reusable workflow consumers receive
the uniq_tag value; ensure the job that exposes the output uses
outputs.uniq_tag: ${{ steps.setTagName.outputs.uniq_tag }} (symbol references:
outputs, uniq_tag, steps.setTagName, jobs.publish-udi).

In @.github/workflows/ubi9-build.yaml:
- Around line 166-170: The publish-udi job does not declare any outputs, so the
workflow-level consumer cannot read jobs.publish-udi.outputs.uniq_tag; add an
outputs block to the publish-udi job that maps uniq_tag to the setTagName step
output (e.g., outputs: uniq_tag: ${{ steps.setTagName.outputs.uniq_tag }}),
ensure the step that generates the tag has id: setTagName and emits the output
(via the step's output mechanism), and keep the output name uniq_tag to match
the workflow consumer.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b8ac2d46-c0a9-4ed6-9766-48a1096f6535

📥 Commits

Reviewing files that changed from the base of the PR and between 1909a73 and ed30b94.

📒 Files selected for processing (4)
  • .github/workflows/pr-check-ubi10.yaml
  • .github/workflows/pr-check.yaml
  • .github/workflows/ubi10-build.yaml
  • .github/workflows/ubi9-build.yaml

Comment thread .github/workflows/ubi10-build.yaml
Comment on lines +166 to +170
docker buildx imagetools create \
-t ${{ env.REGISTRY }}/universal-developer-image:${tag} \
${{ env.REGISTRY }}/universal-developer-image:amd64-${{env.short_sha}} \
--os linux --arch amd64

docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:${tag} \
${{ env.REGISTRY }}/universal-developer-image:arm64-${{env.short_sha}} \
--os linux --arch arm64

docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:${tag} \
${{ env.REGISTRY }}/universal-developer-image:ppc64le-${{env.short_sha}} \
--os linux --arch ppc64le

docker manifest push ${{ env.REGISTRY }}/universal-developer-image:${tag}
${{ env.REGISTRY }}/universal-developer-image:arm64-${{env.short_sha}} \
${{ env.REGISTRY }}/universal-developer-image:ppc64le-${{env.short_sha}}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
nl -ba .github/workflows/ubi9-build.yaml | sed -n '14,18p;147,176p'

Repository: devfile/developer-images

Length of output: 108


🏁 Script executed:

cat -n .github/workflows/ubi9-build.yaml | sed -n '14,20p;140,180p'

Repository: devfile/developer-images

Length of output: 2065


🏁 Script executed:

cat -n .github/workflows/ubi9-build.yaml | sed -n '147,190p'

Repository: devfile/developer-images

Length of output: 1471


Expose uniq_tag from the publish-udi job.

Line 17 declares a workflow output that reads jobs.publish-udi.outputs.uniq_tag, but the publish-udi job (line 147) never defines outputs:, so reusable-workflow callers won't receive the value written by the setTagName step.

Suggested fix
  publish-udi:
    name: Publish udi
    runs-on: ubuntu-22.04
    needs: build-udi
+   outputs:
+     uniq_tag: ${{ steps.setTagName.outputs.uniq_tag }}
    steps:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ubi9-build.yaml around lines 166 - 170, The publish-udi
job does not declare any outputs, so the workflow-level consumer cannot read
jobs.publish-udi.outputs.uniq_tag; add an outputs block to the publish-udi job
that maps uniq_tag to the setTagName step output (e.g., outputs: uniq_tag: ${{
steps.setTagName.outputs.uniq_tag }}), ensure the step that generates the tag
has id: setTagName and emits the output (via the step's output mechanism), and
keep the output name uniq_tag to match the workflow consumer.

@github-actions
Copy link
Copy Markdown

Pull Request images published ✨

Base: quay.io/devfile/base-developer-image:pr-252
UDI: quay.io/devfile/universal-developer-image:pr-252

Signed-off-by: Prabhu K <Prabhu.K@ibm.com>

Signed-off-by: Prabhu K <Prabhu.K@ibm.com>
Signed-off-by: Prabhu K <Prabhu.K@ibm.com>
…bm.com>

Signed-off-by: Prabhu K <Prabhu.K@ibm.com>
@dkwon17 dkwon17 force-pushed the fix/docker-buildx-publish branch from ed30b94 to 9dc300e Compare April 15, 2026 17:44
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
.github/workflows/ubi9-build.yaml (1)

147-175: ⚠️ Potential issue | 🟠 Major

Missing outputs: declaration on publish-udi job.

The workflow declares an output at line 17 (jobs.publish-udi.outputs.uniq_tag), but the publish-udi job does not have an outputs: block to expose the uniq_tag value from the setTagName step. Without this, reusable-workflow callers won't receive the output.

Suggested fix
  publish-udi:
    name: Publish udi
    runs-on: ubuntu-22.04
    needs: build-udi
+   outputs:
+     uniq_tag: ${{ steps.setTagName.outputs.uniq_tag }}
    steps:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ubi9-build.yaml around lines 147 - 175, Add an outputs
block to the publish-udi job exposing the uniq_tag produced by the step with id
setTagName: under the job named publish-udi add outputs: uniq_tag: ${{
steps.setTagName.outputs.uniq_tag }} so callers of the reusable workflow can
access the value emitted by the setTagName step.
.github/workflows/ubi10-build.yaml (1)

15-18: ⚠️ Potential issue | 🟠 Major

Fix the workflow_call output reference.

Line 18 incorrectly references the step ID in the output path. Job-level outputs should be referenced by the output name defined in the job's outputs: block, not by step ID. The current syntax jobs.publish-udi.outputs.setTagName.uniq_tag will not resolve correctly.

Suggested fix
     outputs:
       uniq_tag:
         description: "The unique tag for the universal developer image"
-        value: ${{ jobs.publish-udi.outputs.setTagName.uniq_tag }}
+        value: ${{ jobs.publish-udi.outputs.uniq_tag }}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ubi10-build.yaml around lines 15 - 18, The workflow output
reference is using the step ID instead of the job output name; update the
outputs value to reference the job-level output name by replacing
jobs.publish-udi.outputs.setTagName.uniq_tag with
jobs.publish-udi.outputs.uniq_tag so it points to the output declared in the
publish-udi job's outputs block (job name: publish-udi, output: uniq_tag).
🧹 Nitpick comments (1)
.github/workflows/pr-check.yaml (1)

192-196: LGTM!

Correctly uses docker buildx imagetools create for multi-arch manifest publishing.

Optional: Consider adding docker buildx imagetools inspect after creation for verification, as done in pr-check-ubi10.yaml (lines 176-177 and 202-203). This provides explicit confirmation that the multi-arch manifest was created successfully.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/pr-check.yaml around lines 192 - 196, Add a verification
step immediately after the existing docker buildx imagetools create invocation
to run docker buildx imagetools inspect against the same image tag (${{
env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}}) to
confirm the multi-arch manifest was created; mirror the pattern used in
pr-check-ubi10.yaml (inspect after create) and ensure the inspect command runs
in the same job context so its success/failure is visible in CI logs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @.github/workflows/ubi10-build.yaml:
- Around line 15-18: The workflow output reference is using the step ID instead
of the job output name; update the outputs value to reference the job-level
output name by replacing jobs.publish-udi.outputs.setTagName.uniq_tag with
jobs.publish-udi.outputs.uniq_tag so it points to the output declared in the
publish-udi job's outputs block (job name: publish-udi, output: uniq_tag).

In @.github/workflows/ubi9-build.yaml:
- Around line 147-175: Add an outputs block to the publish-udi job exposing the
uniq_tag produced by the step with id setTagName: under the job named
publish-udi add outputs: uniq_tag: ${{ steps.setTagName.outputs.uniq_tag }} so
callers of the reusable workflow can access the value emitted by the setTagName
step.

---

Nitpick comments:
In @.github/workflows/pr-check.yaml:
- Around line 192-196: Add a verification step immediately after the existing
docker buildx imagetools create invocation to run docker buildx imagetools
inspect against the same image tag (${{ env.REGISTRY
}}/universal-developer-image:pr-${{github.event.number}}) to confirm the
multi-arch manifest was created; mirror the pattern used in pr-check-ubi10.yaml
(inspect after create) and ensure the inspect command runs in the same job
context so its success/failure is visible in CI logs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bc06905c-5e3e-4bbd-97ec-36e4effc3725

📥 Commits

Reviewing files that changed from the base of the PR and between ed30b94 and 9dc300e.

📒 Files selected for processing (5)
  • .github/workflows/pr-check-ubi10.yaml
  • .github/workflows/pr-check.yaml
  • .github/workflows/ubi10-build.yaml
  • .github/workflows/ubi9-build.yaml
  • universal/ubi10/Dockerfile

@dkwon17 dkwon17 changed the title chore: update GitHub Actions workflows for UBI 9 and UBI 10 images [DO NOT MERGE] chore: update GitHub Actions workflows for UBI 9 and UBI 10 images Apr 15, 2026
@github-actions
Copy link
Copy Markdown

Pull Request images published ✨

Base: quay.io/devfile/base-developer-image:pr-252
UDI: quay.io/devfile/universal-developer-image:pr-252

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants