Skip to content

Conversation

@srbarrios
Copy link
Member

@srbarrios srbarrios commented Oct 31, 2025

What does this PR change?

This pull request updates the GitHub Actions workflows for building and pushing container images, adding support for multi-architecture builds (amd64 and arm64). It also makes minor improvements to Dockerfiles, including package additions and cleanups.

Multi-architecture build improvements:

  • Added the PLATFORMS environment variable (linux/amd64,linux/arm64) to .github/workflows/build_containers.yml and .github/workflows/build_controller_test_container.yml, enabling all container images to be built for both amd64 and arm64 architectures.
  • Integrated QEMU and Docker Buildx setup steps into all relevant jobs in both workflows, ensuring multi-arch builds are supported in CI.
  • Updated all Docker build-and-push steps to use the platforms argument referencing the new PLATFORMS variable, ensuring images are published for both architectures.

Workflow and Dockerfile cleanup:

  • Removed unused or redundant jobs and Dockerfiles related to container-registry and container-registry-auth, and repurposed jobs to streamline the workflow.
  • In testsuite/dockerfiles/buildhost/Dockerfile, added the iputils package to the install list.
  • In testsuite/dockerfiles/controller-dev/Dockerfile, added libgbm-devel and vi, and consolidated the installation of libssh4 and libssh-devel.

GUI diff

No difference.

  • DONE

Documentation

  • No documentation needed

  • DONE

Test coverage

ℹ️ If a major new functionality is added, it is strongly recommended that tests for the new functionality are added to the Cucumber test suite

  • No tests

  • DONE

Links

No ports

  • DONE

Changelogs

Make sure the changelogs entries you are adding are compliant with https://github.com/uyuni-project/uyuni/wiki/Contributing#changelogs and https://github.com/uyuni-project/uyuni/wiki/Contributing#uyuni-projectuyuni-repository

If you don't need a changelog check, please mark this checkbox:

  • No changelog needed

If you uncheck the checkbox after the PR is created, you will need to re-run changelog_test (see below)

Re-run a test

If you need to re-run a test, please mark the related checkbox, it will be unchecked automatically once it has re-run:

  • Re-run test "changelog_test"
  • Re-run test "backend_unittests_pgsql"
  • Re-run test "java_pgsql_tests"
  • Re-run test "schema_migration_test_pgsql"
  • Re-run test "susemanager_unittests"
  • Re-run test "frontend_checks"
  • Re-run test "spacecmd_unittests"

Before you merge

Check How to branch and merge properly!

@srbarrios srbarrios self-assigned this Oct 31, 2025
@srbarrios srbarrios requested review from a team as code owners October 31, 2025 11:11
@srbarrios srbarrios requested review from a team and Copilot and removed request for a team October 31, 2025 11:12
@github-actions
Copy link
Contributor

👋 Hello! Thanks for contributing to our project.
Acceptance tests will take some time (aprox. 1h), please be patient ☕

You can see the progress at the end of this page and at https://github.com/uyuni-project/uyuni/pull/11102/checks
Once tests finish, if they fail, you can check 👀 the cucumber report. See the link at the output of the action.
You can also check the artifacts section, which contains the logs at https://github.com/uyuni-project/uyuni/pull/11102/checks.

If you are unsure the failing tests are related to your code, you can check the "reference jobs". These are jobs that run on a scheduled time with code from master. If they fail for the same reason as your build, it means the tests or the infrastructure are broken. If they do not fail, but yours do, it means it is related to your code.

Reference tests:

KNOWN ISSUES

Sometimes the build can fail when pulling new jar files from download.opensuse.org . This is a known limitation. Given this happens rarely, when it does, all you need to do is rerun the test. Sorry for the inconvenience.

For more tips on troubleshooting, see the troubleshooting guide.

Happy hacking!
⚠️ You should not merge if acceptance tests fail to pass. ⚠️

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds macOS (Darwin) support to the Podman test runner infrastructure, enabling developers to run the testsuite on macOS systems using Podman Desktop. The changes enable cross-platform compatibility by detecting the operating system and adjusting commands accordingly.

Key changes:

  • Added Darwin OS detection and conditional command execution throughout all podman_runner scripts
  • Renamed 00_setup_env.sh to 00_clean_env.sh with macOS-specific cleanup logic
  • Replaced custom container registry images with standard docker.io/library/registry:2 images
  • Added multi-architecture (amd64/arm64) build support for GitHub Actions workflows
  • Improved error messages and added server readiness checks

Reviewed Changes

Copilot reviewed 41 out of 41 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
testsuite/podman_runner/*.sh Added Darwin detection and conditional podman command handling (with/without sudo)
testsuite/podman_runner/00_clean_env.sh Renamed from 00_setup_env.sh with added macOS machine cleanup logic
testsuite/podman_runner/03_run_controller_and_registry_and_buildhost.sh Major refactor: replaced custom registry containers with standard registry:2 images, added registry wait logic and insecure registry configuration
testsuite/podman_runner/08_start_server.sh Added wait_for_server_ready() function and --privileged flag
testsuite/podman_runner/setup-nginx-proxy-for-docker-registries.sh Added Darwin-specific nginx installation and configuration paths
testsuite/dockerfiles/*/Dockerfile Added iputils package to various minion containers and additional dependencies
.github/workflows/*.yml Added multi-architecture build support (linux/amd64, linux/arm64)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

EOF

$PODMAN_CMD exec controller bash --login -c 'source /root/.bashrc'
$PODMAN_CMD run -d --network network --name ${AUTH_REGISTRY_NAME} -h ${AUTH_REGISTRY_NAME} -e AUTH_REGISTRY=${AUTH_REGISTRY_NAME} -e AUTH_REGISTRY_USER=${AUTH_REGISTRY_USER} -e AUTH_REGISTRY_PASSWD=${AUTH_REGISTRY_PASSWD} -p 5001:5000 docker.io/library/registry:2
Copy link

Copilot AI Oct 31, 2025

Choose a reason for hiding this comment

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

The standard registry:2 image does not support authentication via AUTH_REGISTRY_USER and AUTH_REGISTRY_PASSWD environment variables. The registry:2 image requires a separate htpasswd file and configuration. This container will not have authentication enabled as intended.

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

@srbarrios srbarrios force-pushed the refactor-gh-validation-arm branch 3 times, most recently from f927c51 to 5cb0173 Compare October 31, 2025 12:46
@srbarrios srbarrios force-pushed the refactor-gh-validation-arm branch from 5cb0173 to 4ed2a44 Compare October 31, 2025 13:04
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.

2 participants