Skip to content

ci: run the tests against arm runner as well - #169

Merged
rm3l merged 5 commits into
redhat-developer:mainfrom
rm3l:ci/test_against_arm_arch_runner--main
Mar 2, 2026
Merged

ci: run the tests against arm runner as well#169
rm3l merged 5 commits into
redhat-developer:mainfrom
rm3l:ci/test_against_arm_arch_runner--main

Conversation

@rm3l

@rm3l rm3l commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

Which issue(s) does this PR fix or relate to

Relates to RHDHBUGS-2747

PR acceptance criteria

  • Tests updated and passing
  • Documentation updated
  • Built-in TechDocs updated if needed. Note that TechDocs changes may need to be reviewed by a Product Manager and/or Architect to ensure content accuracy, clarity, and alignment with user needs.

How to test changes / Special notes to the reviewer

@rhdh-qodo-merge

Copy link
Copy Markdown
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🔒 Security concerns

Supply chain integrity:
The workflow downloads a docker-compose binary via curl from GitHub releases and executes it without checksum/signature verification. Consider verifying a published SHA256 (or using a package-managed install) to reduce risk of tampering/MITM or compromised release artifacts.

⚡ Recommended focus areas for review

Workflow Syntax

The job name expression appears to include a nested GitHub expression (${{ matrix.os }}) inside another ${{ ... }} block, which is not supported. This may cause the workflow to fail to parse or render the job name incorrectly; consider concatenating matrix.os within the same expression (e.g., via format() or direct string concatenation) instead of nesting expressions.

name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && ' - ${{ matrix.os }}' || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"
runs-on: ${{ matrix.os }}
env:
📚 Focus areas based on broader codebase context

Arch naming

The workflow matrix introduces ubuntu-24.04-arm as an OS dimension, but the broader codebase convention for ARM64 appears to be aarch64. Verify that the chosen runner label is intentional and that downstream tooling/scripts (if any) that key off architecture naming won’t mis-detect or skip ARM-specific behavior. (Ref 1)

    os:
      - ubuntu-24.04
      - ubuntu-24.04-arm
    tool:
      - docker
      - podman
    userConfig:
      - "false"
      - "true"
    composeConfig:
      - name: "default"
        cliArgs: ""
      - name: "corporate-proxy"
        cliArgs: "-f compose.yaml -f compose-with-corporate-proxy.yaml"
      - name: "dynamic-plugins-root"
        cliArgs: "-f compose.yaml -f compose-dynamic-plugins-root.yaml"
      - name: "orchestrator-workflow"
        cliArgs: "-f compose.yaml -f orchestrator/compose.yaml"
      - name: "developer-lightspeed-minimal"
        cliArgs: "-f compose.yaml -f developer-lightspeed/compose.yaml"
      - name: "developer-lightspeed"
        cliArgs: "-f compose.yaml -f developer-lightspeed/compose-with-ollama.yaml"

name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && ' - ${{ matrix.os }}' || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"
runs-on: ${{ matrix.os }}
env:

Reference reasoning: Existing YAML configuration enumerates supported architectures as x86_64 and aarch64, indicating a consistent convention for referring to ARM64. Aligning CI runner/arch naming with that convention (or explicitly mapping between them) helps avoid mismatches where other configs expect aarch64 but CI exposes arm-style identifiers.

📄 References
  1. redhat-developer/rhdh/rpms.in.yaml [1-11]
  2. redhat-developer/rhdh-operator/bundle/rhdh/tests/scorecard/config.yaml [5-47]
  3. redhat-developer/rhdh-operator/bundle/backstage.io/tests/scorecard/config.yaml [5-47]
  4. redhat-developer/rhdh-operator/config/scorecard/patches/olm.config.yaml [1-40]
  5. redhat-developer/rhdh-operator/bundle/rhdh/tests/scorecard/config.yaml [58-67]
  6. redhat-developer/rhdh-operator/bundle/rhdh/tests/scorecard/config.yaml [48-57]
  7. redhat-developer/rhdh-operator/config/scorecard/patches/olm.config.yaml [41-50]
  8. redhat-developer/rhdh-operator/config/scorecard/patches/basic.config.yaml [1-11]

@rhdh-qodo-merge rhdh-qodo-merge Bot added the enhancement New feature or request label Mar 2, 2026
@rhdh-qodo-merge

rhdh-qodo-merge Bot commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

PR Type

(Describe updated until commit c49adf3)

Enhancement


Description

  • Add ARM architecture support to CI test matrix

  • Download architecture-specific docker-compose binaries dynamically

  • Update setup-containerized-podman action to v2.0.0 with ARM support

  • Extend test coverage to run on both ubuntu-24.04 and ubuntu-24.04-arm runners


File Walkthrough

Relevant files
Enhancement
test.yml
Add ARM runner support and architecture-aware binary downloads

.github/workflows/test.yml

  • Added os matrix strategy with ubuntu-24.04 and ubuntu-24.04-arm
    runners
  • Modified docker-compose download to use dynamic architecture detection
    via uname -m
  • Updated job name formatting to display ARM architecture in test
    results
  • Upgraded setup-containerized-podman action from v1 to v2.0.0 for ARM
    compatibility
+7/-4     

@rhdh-qodo-merge

rhdh-qodo-merge Bot commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix nested interpolation error
Suggestion Impact:Updated the workflow job name expression to replace nested ${{ matrix.os }} interpolation with format(' - {0}', matrix.os), preventing rendering errors.

code diff:

-    name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && ' - ${{ matrix.os }}' || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"
+    name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && format(' - {0}', matrix.os) || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"

Fix a nested interpolation error in the job name expression by using the
format() function to correctly include the matrix.os value.

.github/workflows/test.yml [56]

-name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && ' - ${{ matrix.os }}' || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"
+name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && format(' - {0}', matrix.os) || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"

[Suggestion processed]

Suggestion importance[1-10]: 9

__

Why: This suggestion correctly identifies and fixes a critical bug in the job name expression where nested interpolation (${{...}}) would fail, ensuring the job name is rendered correctly.

High
General
Use runner context for architecture

Replace the shell command uname -m with the GitHub Actions runner.arch context
variable to determine the system architecture for the download URL.

.github/workflows/test.yml [107-108]

-sudo curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-$(uname -m)" \
-   -o /usr/local/bin/docker-compose
+- name: Install docker-compose
+  env:
+    ARCH: ${{ runner.arch == 'x64' && 'x86_64' || 'aarch64' }}
+  run: |
+    sudo curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-${ARCH}" \
+      -o /usr/local/bin/docker-compose
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why: The suggestion offers a more robust, platform-agnostic way to determine the architecture using runner.arch, improving maintainability, although the current uname -m implementation is correct and functional.

Low
  • Update

@rm3l
rm3l marked this pull request as ready for review March 2, 2026 11:54
@openshift-ci
openshift-ci Bot requested review from gazarenkov and zdrapela March 2, 2026 11:54
@rhdh-qodo-merge

Copy link
Copy Markdown
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🔒 Security concerns

Supply chain risk:
The workflow downloads docker-compose directly from GitHub Releases via curl and installs it without checksum/signature verification, then executes it. Consider validating the downloaded artifact (e.g., SHA256) to mitigate tampering/MITM risks.

⚡ Recommended focus areas for review

Runner Support

The matrix now targets ubuntu-24.04-arm; validate that this runner label is available in the target GitHub environment and that the job’s dependencies (notably Docker installation via apt) work reliably on ARM runners. In particular, confirm Docker CE packages are available for the runner’s architecture and that the installation steps don’t assume x86_64-specific behavior.

    os:
      - ubuntu-24.04
      - ubuntu-24.04-arm
    tool:
      - docker
      - podman
    userConfig:
      - "false"
      - "true"
    composeConfig:
      - name: "default"
        cliArgs: ""
      - name: "corporate-proxy"
        cliArgs: "-f compose.yaml -f compose-with-corporate-proxy.yaml"
      - name: "dynamic-plugins-root"
        cliArgs: "-f compose.yaml -f compose-dynamic-plugins-root.yaml"
      - name: "orchestrator-workflow"
        cliArgs: "-f compose.yaml -f orchestrator/compose.yaml"
      - name: "developer-lightspeed-minimal"
        cliArgs: "-f compose.yaml -f developer-lightspeed/compose.yaml"
      - name: "developer-lightspeed"
        cliArgs: "-f compose.yaml -f developer-lightspeed/compose-with-ollama.yaml"

name: "${{ matrix.tool }} compose - ${{ matrix.composeConfig.name }}${{ matrix.os != 'ubuntu-24.04' && format(' - {0}', matrix.os) || '' }}${{ matrix.userConfig == 'true' && ' - user config' || '' }}"
runs-on: ${{ matrix.os }}
env:
Supply Chain

The workflow downloads a prebuilt docker-compose binary via curl and executes it; consider adding integrity verification (checksum/signature) to reduce supply-chain risk, especially now that the architecture is dynamic via uname -m.

# Install standalone docker-compose for consistent version across docker/podman tests
echo "Installing docker-compose $DOCKER_COMPOSE_VERSION..."
sudo curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-linux-$(uname -m)" \
  -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Also install as Docker CLI plugin
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo ln -sf /usr/local/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose
📄 References
  1. redhat-developer/rhdh-chart/charts/orchestrator-software-templates-infra/values.yaml [141-163]
  2. redhat-developer/rhdh-chart/charts/orchestrator-infra/values.yaml [37-41]
  3. redhat-developer/rhdh-chart/charts/orchestrator-infra/templates/tests/infra-test.yaml [0-2]
  4. redhat-developer/rhdh-chart/charts/orchestrator-software-templates-infra/templates/tests/infra-test.yaml [0-2]
  5. redhat-developer/rhdh-chart/charts/backstage/templates/tests/test-secret.yaml [1-3]
  6. redhat-developer/rhdh-operator/config/profile/rhdh/plugin-deps/tekton.yaml [117-151]
  7. redhat-developer/rhdh-chart/charts/orchestrator-software-templates/templates/tekton/tekton-tasks.yaml [117-151]
  8. redhat-developer/rhdh/scripts/rhdh-openshift-setup/values.yaml [271-310]

@rhdh-qodo-merge

Copy link
Copy Markdown
Contributor

PR Code Suggestions ✨

No code suggestions found for the PR.

@rm3l
rm3l merged commit ee92df7 into redhat-developer:main Mar 2, 2026
49 checks passed
@rm3l
rm3l deleted the ci/test_against_arm_arch_runner--main branch March 2, 2026 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant