-
Notifications
You must be signed in to change notification settings - Fork 8
Run KUTTL in Zuul #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -82,7 +82,7 @@ endif | |
| # Be aware that the target commands are only tested with Docker which is | ||
| # scaffolded by default. However, you might want to replace it to use other | ||
| # tools. (i.e. podman) | ||
| CONTAINER_TOOL ?= docker | ||
| CONTAINER_TOOL ?= podman | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
image="docker.io/library/alpine:3.20"
podman pull "$image"
if docker image inspect "$image" >/dev/null 2>&1; then
echo "Docker and Podman share image visibility on this runner."
else
echo "Docker cannot see the image pulled by Podman."
exit 1
fiRepository: openstack-k8s-operators/lightspeed-operator Length of output: 225 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- candidate files ---'
git ls-files | rg '(^|/)(Makefile|.*build-and-push.*\.ya?ml)$|\.github/workflows'
printf '%s\n' '--- container-tool references ---'
rg -n -C 4 'CONTAINER_TOOL|docker (build|tag|push)|podman (build|tag|push)|make (docker|bundle|catalog)' Makefile .github/workflows 2>/dev/null || trueRepository: openstack-k8s-operators/lightspeed-operator Length of output: 13010 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- workflow ---'
cat -n .github/workflows/build-and-push.yaml | sed -n '1,125p'
printf '%s\n' '--- Makefile build/push targets ---'
cat -n Makefile | sed -n '176,210p;382,442p'
printf '%s\n' '--- change summary ---'
git diff --stat
git diff -- Makefile .github/workflows/build-and-push.yaml | sed -n '1,180p'Repository: openstack-k8s-operators/lightspeed-operator Length of output: 9535 🌐 Web query:
💡 Result: GitHub-hosted runners using the ubuntu-latest label (currently Ubuntu 24.04 LTS) come with Podman pre-installed [1]. Runner Software and Podman: The standard GitHub-hosted ubuntu-latest runner includes a variety of container tools, including Podman, Buildah, Skopeo, Docker, and Docker Compose [1]. While Podman is available on these images, it is important to note that the default container runtime used by GitHub Actions for job isolation and service containers is Docker [2][3]. Using Podman in Workflows: You can use Podman directly in your workflow steps by calling the podman command (e.g., podman build, podman push) [4]. Because Podman is daemonless and rootless-capable, it functions differently than the standard Docker-in-Docker setup [2][5]. Key Considerations: 1. Compatibility and Hooks: GitHub Actions does not natively replace its internal Docker-based runner execution with Podman [2]. To use Podman as the primary runtime for container actions (e.g., the container: keyword in a job), you would need to implement custom Runner Container Hooks, which allow you to override the default Docker-based container lifecycle management [2][3]. 2. Storage and Docker-in-Docker: Standard workflows that rely on Docker-in-Docker (using the Docker socket at /var/run/docker.sock) are designed for the Docker daemon [2][3]. While you can use Podman to interact with the local Docker daemon (e.g., using the docker-daemon: transport), users have previously encountered compatibility issues when versions of Podman and the Docker daemon/API do not align [6]. 3. Official Documentation: GitHub's official documentation focuses on the environment specifications of the runners (e.g., available tools and hardware) [7] but does not provide official, supported guidance for migrating the runner's native container runtime from Docker to Podman [2]. Custom implementations for such migrations are community-driven [5][3]. In summary, while Podman is pre-installed and available for use within your CI/CD steps, the underlying runner infrastructure remains architected around Docker. Advanced use cases requiring Podman to handle the full container execution lifecycle require custom configuration via Runner Container Hooks [2][3]. Citations:
🌐 Web query:
💡 Result: Podman and Docker do not share image storage and operate independently, as they are distinct container engines with different architectures [1][2][3]. Podman is a daemonless container engine [4][5], while Docker relies on a centralized, root-privileged daemon [1][6]. Because of these fundamental differences in architecture and management, they maintain separate, non-overlapping image repositories [2][7]. Key details regarding their separation: 1. Different Default Storage Locations: - Docker: Typically stores images in /var/lib/docker/ [6][8]. - Podman (Rootful): Typically stores images in /var/lib/containers/storage/ [9][10]. - Podman (Rootless): Typically stores images in $HOME/.local/share/containers/storage/ [9][8][10]. 2. Lack of Native Sharing: Because they use separate storage paths and management mechanisms, images pulled or built by one engine are not natively visible or accessible to the other [2][7]. If you run the command podman images or docker images, you will only see the images managed by that specific engine [2][7]. 3. Interoperability via Transport: While they do not share a storage directory, Podman can interact with the Docker daemon's storage indirectly using the docker-daemon transport [11][7]. For example, you can run an image stored in the Docker daemon using the following syntax: podman run docker-daemon:docker.io/library/image_name [11][7] This command pulls the image out of the Docker daemon's storage, copies it into Podman's local storage, and then runs the container [7]. Similarly, images can be moved between them using tools like docker save and podman load [2]. For developers working in environments where both are installed, they can coexist without conflict because they use separate sockets and storage paths [6][2][3]. However, they remain distinct and independent systems [1][2]. Citations:
Use one container runtime in the build workflow. When the workflow uses the new default, 🤖 Prompt for AI AgentsSource: Path instructions |
||
|
|
||
| # Setting SHELL to bash allows bash commands to be executed by recipes. | ||
| # Options are set to exit when a recipe line exits non-zero or a piped command fails. | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: openstack-k8s-operators/lightspeed-operator
Length of output: 234
🏁 Script executed:
Repository: openstack-k8s-operators/lightspeed-operator
Length of output: 1475
🌐 Web query:
Zuul irrelevant-files regular expression matching semantics re.match file names💡 Result:
In Zuul, the irrelevant-files matcher (as well as the files matcher) uses the RE2 regular expression library [1][2][3]. Regarding matching semantics, Zuul regular expressions for these options behave as if there is an implicit ^ anchor at the beginning of the string [1][4][2]. This means the pattern must match the start of the file path [1][4]. To match at an arbitrary position within the file path, you must explicitly prepend.* to your regular expression [1][4][3]. Zuul moved away from standard Python regular expression matching (which historically might have been used in older versions) to the RE2 library to ensure speed and safety [5][6][7]. Because RE2 is used, backreferences are not supported [6][8]. If you need to perform a partial match or search for a pattern anywhere in the file path, simply using the pattern without anchors will not work as it does in some other contexts; you must account for the implicit start-of-string anchor [1][2].
Citations:
Restrict the irrelevant-file pattern to Markdown files.
.*/*.mdmatches thecmdprefix ofcmd/main.go, so a source-only change can skipopenstack-operator-kuttl. Use^.*\.md$instead.🤖 Prompt for AI Agents