Skip to content

chore(GHA): use arm runner#2293

Merged
frewilhelm merged 24 commits into
open-component-model:mainfrom
frewilhelm:use-gha-ci-arm
Apr 22, 2026
Merged

chore(GHA): use arm runner#2293
frewilhelm merged 24 commits into
open-component-model:mainfrom
frewilhelm:use-gha-ci-arm

Conversation

@frewilhelm

@frewilhelm frewilhelm commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

This PR migrates GitHub Actions CI/CD workflows from ubuntu-latest (x86_64) to ubuntu-24.04-arm (ARM64) runners for improved performance and cost efficiency. It also:

  • Adds CI workflow self-change detection to trigger full rebuilds
  • Introduces multi-architecture matrix testing for conformance and E2E jobs
  • Makes the Dockerfile and Taskfile architecture-aware

Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
@frewilhelm frewilhelm requested a review from a team as a code owner April 15, 2026 08:37
@netlify

netlify Bot commented Apr 15, 2026

Copy link
Copy Markdown

Deploy Preview for ocm-website canceled.

Name Link
🔨 Latest commit 4d390aa
🔍 Latest deploy log https://app.netlify.com/projects/ocm-website/deploys/69e893c8a7dc58000861682d

@github-actions github-actions Bot added kind/chore chore, maintenance, etc. size/s Small labels Apr 15, 2026
@coderabbitai

coderabbitai Bot commented Apr 15, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

CI workflows were shifted broadly from ubuntu-latest to ubuntu-24.04-arm; .github/workflows/ci.yml module-discovery now detects CI workflow changes (CI_CHANGED) and .env changes (removed env_changed) and updates module/lint selection and generated summary. Conformance builds and Dockerfiles were made multi-arch-aware; skopeo/OCM steps were made architecture-aware.

Changes

Cohort / File(s) Summary
Core CI & module discovery
\.github/workflows/ci.yml
Removed env_changed job output; added CI-workflow change detection (CI_CHANGED); updated logic/branches to set modules_json and lint_modules_json based on CI changes, .env changes, and check_only_changed; updated generated summary text.
Workflow runner updates (bulk)
\.github/workflows/*.yml, \.github/workflows/*.yaml (e.g., cli.yml, cli-release.yml, controller-release.yml, auto-label-ipcei.yaml, publish-ocm-component-version.yml, renovate.yml, release-*, website-*, etc.)
Most workflows changed runs-on: ubuntu-latestruns-on: ubuntu-24.04-arm; a few jobs remain or are explicitly noted as amd64-only via comments. No step logic changes.
Kubernetes E2E / conformance & image handling
\.github/workflows/kubernetes-controller.yml, \.github/workflows/conformance.yml, \.github/workflows/publish-helminput-plugin-component.yaml
Made E2E/conformance jobs architecture-aware (matrix/arch), added conditional skopeo install, switched skopeo --override-arch to use ${{ matrix.arch }}, consolidated controller image archive naming/loading and OCM/setup adjustments.
Linting, Markdown & tooling notes
\.github/workflows/markdown.yml, \.github/workflows/jsonschema.yml, \.github/workflows/openssf-scorecard.yml, \.github/workflows/website-verify-scripts.yml
Moved many lint/link jobs to ARM runners and added inline comments calling out amd64-only actions or asset/arch naming mismatches; left certain jobs on amd64 with explanatory comments.
Conformance scenario files
conformance/scenarios/sovereign/Taskfile.yml, conformance/scenarios/sovereign/USAGE.md, conformance/scenarios/sovereign/components/notes/Dockerfile
Made PLATFORMS dynamic (linux/{{ARCH}}), updated usage docs, parameterized Dockerfile for multi-arch build (BUILDPLATFORM, TARGETOS, TARGETARCH) and set GOOS/GOARCH for cross-compilation.
Misc automation & website jobs
\.github/workflows/reuse_helper_tool.yaml, \.github/workflows/update-plugin-registry.yaml, \.github/workflows/website-publish-site.yaml, \.github/workflows/website-*.yaml
Updated runners to ARM where applicable and added explanatory comments (e.g., Hugo casing, spellcheck/amd64 notes); preserved control flow and steps.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Dev as Developer (push/PR)
  participant GH as GitHub Actions
  participant Discover as discover_modules step
  participant Filter as "Filter JSONs Based on Changes"
  participant Jobs as Build/Test/Lint Jobs

  Dev->>GH: push/PR (files changed)
  GH->>Discover: run module discovery (detect CI workflow / .env / module list)
  Discover->>GH: outputs (`modules_json`, `lint_modules_json`, `CI_CHANGED`)
  GH->>Filter: apply CI_CHANGED / .env / check_only_changed rules
  Filter->>Jobs: provide scoped build/test modules and lint modules
  Jobs->>GH: execute scoped build/test and lint jobs
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • morri-son
  • jakobmoellerdev
  • Skarlso

Poem

🐰 I hopped through workflows, swapped runners with grace,
ARM boots on the ground, builds race in their place.
CI now spies workflows and envs that shift,
choosing what to test and what lints to lift.
A carrot-coded pipeline — light, quick, and spry. 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore(GHA): use arm runner' directly summarizes the main change—migrating GitHub Actions workflows to ARM runners—and is clear and concise.
Description check ✅ Passed The description clearly relates to the changeset by explaining the migration to ARM runners, CI workflow self-change detection, multi-architecture testing, and architecture-aware build files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@github-actions github-actions Bot added the component/github-actions Changes on GitHub Actions or within `.github/` directory label Apr 15, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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/ci.yml:
- Line 305: The workflow uses an ARM runner ("runs-on: ubuntu-24.04-arm") which
breaks CodeQL because CodeQL CLI lacks Linux ARM64 binaries; update the runs-on
value in the CI job that contains "runs-on: ubuntu-24.04-arm" to an x86-64
runner such as "runs-on: ubuntu-24.04" or "runs-on: ubuntu-latest" so CodeQL
analysis can run successfully.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5730b01e-b764-4a06-8809-dcc92bda07f7

📥 Commits

Reviewing files that changed from the base of the PR and between 15807cc and e56bbbc.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml

Comment thread .github/workflows/ci.yml Outdated
morri-son
morri-son previously approved these changes Apr 15, 2026
@frewilhelm frewilhelm marked this pull request as draft April 15, 2026 08:58
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
@frewilhelm frewilhelm marked this pull request as ready for review April 15, 2026 09:27

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/pull-request.yaml (1)

20-118: ⚠️ Potential issue | 🟠 Major

Migration is incomplete in this workflow.
size-labeler (Line 128) and verify-labels (Line 156) still run on ubuntu-latest, so the “switch all CI jobs” objective is not fully met in this file.

Suggested patch
   size-labeler:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04-arm
@@
   verify-labels:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04-arm
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/pull-request.yaml around lines 20 - 118, The workflow
still runs the jobs named size-labeler and verify-labels on ubuntu-latest;
update those job definitions to use the same runner as the other jobs (runs-on:
ubuntu-24.04-arm) so the “switch all CI jobs” migration is complete—locate the
job blocks for size-labeler and verify-labels in the YAML and replace their
runs-on values with ubuntu-24.04-arm, ensuring no other job in this file remains
set to ubuntu-latest.
🤖 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/markdown.yml:
- Line 18: The workflow still mixes architectures because the spellcheck job
uses ubuntu-latest; update the spellcheck job (job id "spellcheck") to use
runs-on: ubuntu-24.04-arm to match the other runners, or add a clear comment
explaining why that job must remain on x86 and pin it explicitly (e.g., keep
ubuntu-latest but document the exception). Also apply the same change or
document exceptions for the other occurrences noted (the other jobs referenced
in the review) so the workflow is consistently migrated.

---

Outside diff comments:
In @.github/workflows/pull-request.yaml:
- Around line 20-118: The workflow still runs the jobs named size-labeler and
verify-labels on ubuntu-latest; update those job definitions to use the same
runner as the other jobs (runs-on: ubuntu-24.04-arm) so the “switch all CI jobs”
migration is complete—locate the job blocks for size-labeler and verify-labels
in the YAML and replace their runs-on values with ubuntu-24.04-arm, ensuring no
other job in this file remains set to ubuntu-latest.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 60b4a12b-f8b8-445f-9abc-dab0c7c84567

📥 Commits

Reviewing files that changed from the base of the PR and between e56bbbc and da7ec15.

📒 Files selected for processing (20)
  • .github/workflows/auto-label-ipcei.yaml
  • .github/workflows/ci.yml
  • .github/workflows/cli-release.yml
  • .github/workflows/cli.yml
  • .github/workflows/controller-release.yml
  • .github/workflows/kubernetes-controller.yml
  • .github/workflows/markdown.yml
  • .github/workflows/publish-helminput-plugin-component.yaml
  • .github/workflows/publish-ocm-component-version.yml
  • .github/workflows/pull-request.yaml
  • .github/workflows/release-branch.yml
  • .github/workflows/release-candidate-version.yml
  • .github/workflows/release-go-submodule.yaml
  • .github/workflows/renovate.yml
  • .github/workflows/reuse_helper_tool.yaml
  • .github/workflows/update-plugin-registry.yaml
  • .github/workflows/website-manual-update-cli-docs.yaml
  • .github/workflows/website-update-cli-docs.yaml
  • .github/workflows/website-update-security-txt.yaml
  • .github/workflows/website-verify-scripts.yml
✅ Files skipped from review due to trivial changes (6)
  • .github/workflows/reuse_helper_tool.yaml
  • .github/workflows/release-branch.yml
  • .github/workflows/website-verify-scripts.yml
  • .github/workflows/auto-label-ipcei.yaml
  • .github/workflows/ci.yml
  • .github/workflows/website-manual-update-cli-docs.yaml

Comment thread .github/workflows/markdown.yml
@jakobmoellerdev

Copy link
Copy Markdown
Member

do you mind doing an actual change in the modules or forcing a check on everything (i think the CI trigger for pull request events should be changed also if the .github file was changed) so we can see if stuff breaks?

Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
@github-actions github-actions Bot added size/m Medium and removed size/s Small labels Apr 15, 2026
Comment thread .github/workflows/kubernetes-controller.yml Outdated
Comment thread .github/workflows/jsonschema.yml
Comment thread .github/workflows/conformance.yml Outdated
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
@frewilhelm

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
conformance/scenarios/sovereign/Taskfile.yml (1)

23-24: Consider a fallback for unmapped uname -m values.

The sed only maps x86_64 and aarch64. On hosts reporting other values (e.g. armv7l, arm64 on some BSD-ish environments, i686), the expression passes the raw string through and produces an invalid docker buildx --platform value like linux/armv7l. Since CI is moving to ubuntu-24.04-arm (which reports aarch64) this is fine in practice, but a defensive default would make the task more robust for contributors on other machines:

♻️ Suggested hardening
   PLATFORMS:
-    sh: 'echo "linux/$(uname -m | sed "s/x86_64/amd64/;s/aarch64/arm64/")"'
+    sh: |
+      arch=$(uname -m)
+      case "$arch" in
+        x86_64|amd64) echo "linux/amd64" ;;
+        aarch64|arm64) echo "linux/arm64" ;;
+        *) echo "linux/amd64" ;;
+      esac
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@conformance/scenarios/sovereign/Taskfile.yml` around lines 23 - 24, Update
the PLATFORMS sh command so unmapped uname -m values get a safe default: expand
the mapping in the existing 'echo "linux/$(uname -m | sed ...)"' expression to
explicitly translate common variants (x86_64 -> amd64, aarch64|arm64 -> arm64,
armv7l -> arm/v7 as appropriate, i686 -> 386) and add a final fallback branch
that returns a known good platform (e.g., amd64) for any other value; locate and
modify the PLATFORMS entry containing the sh string so the sed or equivalent
case/awk logic performs explicit mappings and a default.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@conformance/scenarios/sovereign/Taskfile.yml`:
- Around line 23-24: Update the PLATFORMS sh command so unmapped uname -m values
get a safe default: expand the mapping in the existing 'echo "linux/$(uname -m |
sed ...)"' expression to explicitly translate common variants (x86_64 -> amd64,
aarch64|arm64 -> arm64, armv7l -> arm/v7 as appropriate, i686 -> 386) and add a
final fallback branch that returns a known good platform (e.g., amd64) for any
other value; locate and modify the PLATFORMS entry containing the sh string so
the sed or equivalent case/awk logic performs explicit mappings and a default.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 07d13718-7611-45bf-91e4-9999910a665b

📥 Commits

Reviewing files that changed from the base of the PR and between 68c8056 and 8afb65e.

📒 Files selected for processing (13)
  • .github/workflows/ci.yml
  • .github/workflows/conformance.yml
  • .github/workflows/controller-release.yml
  • .github/workflows/kubernetes-controller.yml
  • .github/workflows/markdown.yml
  • .github/workflows/openssf-scorecard.yml
  • .github/workflows/renovate.yml
  • .github/workflows/update-plugin-registry.yaml
  • .github/workflows/website-publish-site.yaml
  • .github/workflows/website-verify-scripts.yml
  • conformance/scenarios/sovereign/Taskfile.yml
  • conformance/scenarios/sovereign/USAGE.md
  • conformance/scenarios/sovereign/components/notes/Dockerfile
✅ Files skipped from review due to trivial changes (6)
  • .github/workflows/update-plugin-registry.yaml
  • .github/workflows/website-publish-site.yaml
  • .github/workflows/openssf-scorecard.yml
  • .github/workflows/website-verify-scripts.yml
  • conformance/scenarios/sovereign/USAGE.md
  • .github/workflows/controller-release.yml
🚧 Files skipped from review as they are similar to previous changes (4)
  • .github/workflows/renovate.yml
  • .github/workflows/markdown.yml
  • .github/workflows/conformance.yml
  • .github/workflows/ci.yml

Skarlso
Skarlso previously approved these changes Apr 21, 2026
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/conformance.yml (1)

107-142: ⚠️ Potential issue | 🟠 Major

Install skopeo explicitly on ubuntu-24.04-arm or guard with setup.

Skopeo is preinstalled on ubuntu-24.04 (x64) but NOT on the ubuntu-24.04-arm partner image, despite being available in Ubuntu's universe repository. The unqualified skopeo calls at lines 116 and 139 will fail on arm64 matrix legs. Additionally, the comment at .github/workflows/kubernetes-controller.yml line 285 claiming "Skopeo is pre-installed on GitHub-hosted runners" is misleading for arm64.

Either add sudo apt-get update && sudo apt-get install -y skopeo before first use, or wrap the steps with a conditional that skips arm64 until skopeo is available.

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

In @.github/workflows/conformance.yml around lines 107 - 142, The workflow uses
skopeo in the "Load CLI image into Docker daemon" and "Prepare controller image
for kind" steps (the skopeo --override-arch ... copy commands) but skopeo is not
present on the ubuntu-24.04-arm runner; either install it before the first
skopeo invocation (add a step that runs sudo apt-get update && sudo apt-get
install -y skopeo when matrix.arch == 'arm64' or when runner is
ubuntu-24.04-arm) or guard the skopeo-using steps with a conditional (e.g., skip
when matrix.arch == 'arm64') so the workflow does not call skopeo on the arm
runner; update the comment that currently states "Skopeo is pre-installed on
GitHub-hosted runners" to reflect the arm64 exception.
🧹 Nitpick comments (2)
.github/workflows/conformance.yml (1)

67-72: Consider fail-fast: false for the arch matrix.

With the default (fail-fast: true), a failure on one architecture cancels the other, hiding whether the issue is arch-specific or shared. Since the whole point of the matrix here is arch parity, opting out helps diagnosis.

♻️ Proposed tweak
     strategy:
+      fail-fast: false
       matrix:
         arch: [amd64, arm64]

Also note: kubernetes-controller.yml now invokes this reusable workflow (jobs conformance and conformance-published) without an arch input, so each call fans out to 2 runs by design. Worth confirming that's the intended cost/time profile.

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

In @.github/workflows/conformance.yml around lines 67 - 72, Add fail-fast: false
to the GitHub Actions matrix so a failure on one architecture doesn't cancel the
parallel run and hides arch-specific failures: update the workflow's strategy
block (the strategy -> matrix where arch: [amd64, arm64]) to include fail-fast:
false; also confirm callers (notably the reusable workflow invocations in
kubernetes-controller.yml for jobs conformance and conformance-published that
omit an arch input) intentionally fan out to both architectures and accept the
additional cost/time.
.github/workflows/kubernetes-controller.yml (1)

221-263: Both linux-amd64 and linux-arm64 tarballs are available. Consider setting fail-fast: false for independent arch testing.

The OCM releases publish both architecture tarballs (verified for v0.40.0); the workflow will not fail on missing arm64 assets. However, with default fail-fast: true, if the amd64 leg fails, the arm64 leg cancels before reporting results. Setting fail-fast: false ensures both architectures complete their E2E runs independently, providing clearer insight into arch-specific failures.

♻️ Optional: disable fail-fast for this matrix
     needs: build
+    strategy:
+      fail-fast: false
-    strategy:
       matrix:
         arch: [amd64, arm64]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/kubernetes-controller.yml around lines 221 - 263, The E2E
matrix currently uses the default fail-fast behavior which cancels other arch
jobs when one fails; update the workflow's E2E job to explicitly set
strategy.fail-fast: false so amd64 and arm64 runs complete independently. Locate
the E2E job (job name "E2E" and its strategy.matrix block) and add "fail-fast:
false" under the strategy section to prevent early cancellation of the other
architecture run.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.github/workflows/conformance.yml:
- Around line 107-142: The workflow uses skopeo in the "Load CLI image into
Docker daemon" and "Prepare controller image for kind" steps (the skopeo
--override-arch ... copy commands) but skopeo is not present on the
ubuntu-24.04-arm runner; either install it before the first skopeo invocation
(add a step that runs sudo apt-get update && sudo apt-get install -y skopeo when
matrix.arch == 'arm64' or when runner is ubuntu-24.04-arm) or guard the
skopeo-using steps with a conditional (e.g., skip when matrix.arch == 'arm64')
so the workflow does not call skopeo on the arm runner; update the comment that
currently states "Skopeo is pre-installed on GitHub-hosted runners" to reflect
the arm64 exception.

---

Nitpick comments:
In @.github/workflows/conformance.yml:
- Around line 67-72: Add fail-fast: false to the GitHub Actions matrix so a
failure on one architecture doesn't cancel the parallel run and hides
arch-specific failures: update the workflow's strategy block (the strategy ->
matrix where arch: [amd64, arm64]) to include fail-fast: false; also confirm
callers (notably the reusable workflow invocations in kubernetes-controller.yml
for jobs conformance and conformance-published that omit an arch input)
intentionally fan out to both architectures and accept the additional cost/time.

In @.github/workflows/kubernetes-controller.yml:
- Around line 221-263: The E2E matrix currently uses the default fail-fast
behavior which cancels other arch jobs when one fails; update the workflow's E2E
job to explicitly set strategy.fail-fast: false so amd64 and arm64 runs complete
independently. Locate the E2E job (job name "E2E" and its strategy.matrix block)
and add "fail-fast: false" under the strategy section to prevent early
cancellation of the other architecture run.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ac16f778-2620-4e7a-9017-b2fa15c8508b

📥 Commits

Reviewing files that changed from the base of the PR and between 0f38f6b and 055d1f7.

📒 Files selected for processing (2)
  • .github/workflows/conformance.yml
  • .github/workflows/kubernetes-controller.yml

Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
@frewilhelm

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
.github/workflows/conformance.yml (1)

108-110: ⚠️ Potential issue | 🟠 Major

Group the conditional skopeo install command.

Line 110 has a shell operator precedence issue: || and && have equal precedence and are left-associative, so the command is evaluated as (command -v skopeo || sudo apt-get update -qq) && sudo apt-get install -yqq skopeo. When skopeo is found, the first part succeeds, and the && operator still causes apt-get install to execute. Wrap the apt-get commands in a group to ensure they only run when skopeo is missing.

Proposed fix
-        run: command -v skopeo || sudo apt-get update -qq && sudo apt-get install -yqq skopeo
+        run: command -v skopeo >/dev/null 2>&1 || { sudo apt-get update -qq && sudo apt-get install -yqq skopeo; }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/conformance.yml around lines 108 - 110, The shell command
in the "Ensure skopeo is installed" workflow step incorrectly mixes || and &&
causing apt-get to run even when skopeo exists; change the command to run the
apt-get sequence only when `command -v skopeo` fails by grouping the
update+install commands (e.g., use a brace or paren group such as `command -v
skopeo || { sudo apt-get update -qq && sudo apt-get install -yqq skopeo; }`),
ensuring the group is properly terminated so the install runs only on the
failure branch.
🤖 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/kubernetes-controller.yml:
- Around line 282-283: The one-liner check for skopeo has an operator precedence
bug: the command 'command -v skopeo || sudo apt-get update -qq && sudo apt-get
install -yqq skopeo' can run apt-get install even when skopeo exists; update the
"Ensure skopeo is installed" step so the apt-get sequence is grouped and only
executed when the check fails, e.g. replace the right-hand sequence with a
grouped block such as '|| { sudo apt-get update -qq && sudo apt-get install -yqq
skopeo; }' (ensure the braces and terminating semicolon are present).

---

Duplicate comments:
In @.github/workflows/conformance.yml:
- Around line 108-110: The shell command in the "Ensure skopeo is installed"
workflow step incorrectly mixes || and && causing apt-get to run even when
skopeo exists; change the command to run the apt-get sequence only when `command
-v skopeo` fails by grouping the update+install commands (e.g., use a brace or
paren group such as `command -v skopeo || { sudo apt-get update -qq && sudo
apt-get install -yqq skopeo; }`), ensuring the group is properly terminated so
the install runs only on the failure branch.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 201527d2-3a53-4873-b8a5-a3b56f63257e

📥 Commits

Reviewing files that changed from the base of the PR and between 055d1f7 and 44b82f5.

📒 Files selected for processing (2)
  • .github/workflows/conformance.yml
  • .github/workflows/kubernetes-controller.yml

Comment thread .github/workflows/kubernetes-controller.yml Outdated
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/kubernetes-controller.yml (1)

11-21: ⚠️ Potential issue | 🟠 Major

Include the installer in this workflow’s path filters.

E2E now checks out and executes website/static/install.sh, but changes to that script alone won’t trigger this workflow. Add it to both push.paths and pull_request.paths so installer changes are validated here.

🐛 Proposed fix
   push:
     branches:
       - main
       - 'releases/v**'
     paths:
       - kubernetes/controller/**/*
       - .github/workflows/kubernetes-controller.yml
+      - website/static/install.sh
       - .env
   pull_request:
     branches:
       - main
     paths:
       - kubernetes/controller/**/*
       - .github/workflows/kubernetes-controller.yml
+      - website/static/install.sh
       - .env

Also applies to: 244-263

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

In @.github/workflows/kubernetes-controller.yml around lines 11 - 21, The
workflow's path filters currently include kubernetes/controller/**/*,
.github/workflows/kubernetes-controller.yml, and .env but omit the installer;
update both the push.paths and pull_request.paths lists in the
kubernetes-controller.yml workflow to add website/static/install.sh so changes
to the installer trigger the workflow, and mirror the same addition for the
duplicate paths block referenced around the other occurrence (lines
corresponding to the second paths block noted in the comment).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.github/workflows/kubernetes-controller.yml:
- Around line 11-21: The workflow's path filters currently include
kubernetes/controller/**/*, .github/workflows/kubernetes-controller.yml, and
.env but omit the installer; update both the push.paths and pull_request.paths
lists in the kubernetes-controller.yml workflow to add website/static/install.sh
so changes to the installer trigger the workflow, and mirror the same addition
for the duplicate paths block referenced around the other occurrence (lines
corresponding to the second paths block noted in the comment).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 50a64c62-08ea-4390-a5d7-a6ef0196e1c1

📥 Commits

Reviewing files that changed from the base of the PR and between 44b82f5 and f8719b6.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • .github/workflows/conformance.yml
  • .github/workflows/kubernetes-controller.yml
✅ Files skipped from review due to trivial changes (1)
  • .github/workflows/ci.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/conformance.yml

@frewilhelm frewilhelm merged commit 6611b26 into open-component-model:main Apr 22, 2026
125 checks passed
ocmbot Bot pushed a commit that referenced this pull request Apr 22, 2026
This PR migrates GitHub Actions CI/CD workflows from ubuntu-latest
(x86_64) to ubuntu-24.04-arm (ARM64) runners for improved performance
and cost efficiency. It also:
- Adds CI workflow self-change detection to trigger full rebuilds
- Introduces multi-architecture matrix testing for conformance and E2E
jobs
- Makes the Dockerfile and Taskfile architecture-aware

---------

Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
Co-authored-by: Jakob Möller <jakob.moeller@sap.com> 6611b26
ocmbot2 Bot pushed a commit to morri-son/open-component-model that referenced this pull request Apr 22, 2026
This PR migrates GitHub Actions CI/CD workflows from ubuntu-latest
(x86_64) to ubuntu-24.04-arm (ARM64) runners for improved performance
and cost efficiency. It also:
- Adds CI workflow self-change detection to trigger full rebuilds
- Introduces multi-architecture matrix testing for conformance and E2E
jobs
- Makes the Dockerfile and Taskfile architecture-aware

---------

Signed-off-by: Frederic Wilhelm <frederic.wilhelm@sap.com>
Co-authored-by: Jakob Möller <jakob.moeller@sap.com> 6611b26
@frewilhelm frewilhelm deleted the use-gha-ci-arm branch April 22, 2026 11:16
morri-son pushed a commit to morri-son/open-component-model that referenced this pull request May 11, 2026
…scaffolding setup

The sigstore scaffolding's Trillian MySQL image (gcr.io/trillian-opensource-ci/db_server)
is amd64-only, which broke after PR open-component-model#2293 switched CI to ARM64 runners. Reverts
integration tests to ubuntu-latest (amd64).

Also adds `run: once` to scaffolding:setup to prevent go-task from invoking it
twice in parallel via the scaffolding:env dependency graph.

Signed-off-by: Gerald Morrison (D032990) <gerald.morrison@sap.com>
morri-son pushed a commit to morri-son/open-component-model that referenced this pull request May 12, 2026
…scaffolding setup

The sigstore scaffolding's Trillian MySQL image (gcr.io/trillian-opensource-ci/db_server)
is amd64-only, which broke after PR open-component-model#2293 switched CI to ARM64 runners. Reverts
integration tests to ubuntu-latest (amd64).

Also adds `run: once` to scaffolding:setup to prevent go-task from invoking it
twice in parallel via the scaffolding:env dependency graph.

Signed-off-by: Gerald Morrison (D032990) <gerald.morrison@sap.com>
morri-son pushed a commit to morri-son/open-component-model that referenced this pull request May 12, 2026
…scaffolding setup

The sigstore scaffolding's Trillian MySQL image (gcr.io/trillian-opensource-ci/db_server)
is amd64-only, which broke after PR open-component-model#2293 switched CI to ARM64 runners. Reverts
integration tests to ubuntu-latest (amd64).

Also adds `run: once` to scaffolding:setup to prevent go-task from invoking it
twice in parallel via the scaffolding:env dependency graph.

Signed-off-by: Gerald Morrison (D032990) <gerald.morrison@sap.com>
On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com>
morri-son pushed a commit to morri-son/open-component-model that referenced this pull request May 12, 2026
…scaffolding setup

The sigstore scaffolding's Trillian MySQL image (gcr.io/trillian-opensource-ci/db_server)
is amd64-only, which broke after PR open-component-model#2293 switched CI to ARM64 runners. Reverts
integration tests to ubuntu-latest (amd64).

Also adds `run: once` to scaffolding:setup to prevent go-task from invoking it
twice in parallel via the scaffolding:env dependency graph.

Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/github-actions Changes on GitHub Actions or within `.github/` directory kind/chore chore, maintenance, etc. size/m Medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants