Skip to content

CONSOLE-5293: Use console-downloads image instead of cli-artifacts#1158

Open
jhadvig wants to merge 1 commit into
openshift:mainfrom
jhadvig:CONSOLE-5293
Open

CONSOLE-5293: Use console-downloads image instead of cli-artifacts#1158
jhadvig wants to merge 1 commit into
openshift:mainfrom
jhadvig:CONSOLE-5293

Conversation

@jhadvig
Copy link
Copy Markdown
Member

@jhadvig jhadvig commented May 15, 2026

Analysis / Root cause:

The downloads deployment currently uses the cli-artifacts image and runs an inline Python HTTP server script to serve CLI binaries. This approach is being replaced by a dedicated console-downloads image
(openshift/console Dockerfile.downloads) that contains a purpose-built Golang HTTP server with its own entrypoint, making the inline Python
script unnecessary.

Jira: https://redhat.atlassian.net/browse/CONSOLE-5293

Solution description:

  1. manifests/07-operator.yaml and manifests/07-operator-ibm-cloud-managed.yaml — Updated the DOWNLOADS_IMAGE env var from registry.svc.ci.openshift.org/openshift:cli-artifacts to
    registry.svc.ci.openshift.org/openshift:console-downloads.
  2. bindata/assets/deployments/downloads-deployment.yaml — Removed the inline Python HTTP server script (command, args), the /tmp volumeMount, and the tmp emptyDir volume. The new
    console-downloads image has its own entrypoint (/opt/downloads/downloads --config-path=/opt/downloads/defaultArtifactsConfig.yaml), so no custom command/args are needed.

No Go code changes were required — the operator reads the deployment YAML from bindata and sets the image from the DOWNLOADS_IMAGE env var, which continues to work as before.

Test setup:

The console-downloads image must be present in the release payload. Ensure the image is built and available via the CI config in openshift/release.

Test cases:

  • Verify the downloads deployment starts successfully with the new console-downloads image
  • Verify the downloads page at https://downloads-openshift-console.apps.<cluster>/ serves CLI binaries correctly
  • Verify oc download links for all architectures (amd64, arm64, ppc64le, s390x) and platforms (linux, mac, windows) are functional
  • Verify the liveness and readiness probes pass on port 8080
  • Verify the operator reconciles correctly after a fresh install
  • Verify the operator reconciles correctly on upgrade from a version using cli-artifacts

Needs to be tested with openshift/console#16455

Depends on: openshift/release#79355

Browser conformance:

  • Chrome
  • Firefox
  • Safari (or Epiphany on Linux)

N/A — this is a backend/operator change with no UI modifications. Downloads page was verified accessible via Chrome.

Additional info:

This is a net deletion of ~200 lines of inline Python. The new Golang-based downloads server in the console-downloads image provides the same functionality with better performance and maintainability.

Summary by CodeRabbit

  • Chores
    • Optimized downloads deployment architecture for improved service reliability.
    • Updated container image references for downloads service consistency.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 15, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

openshift-ci-robot commented May 15, 2026

@jhadvig: This pull request references CONSOLE-5293 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Analysis / Root cause:

The downloads deployment currently uses the cli-artifacts image and runs an inline Python HTTP server script to serve CLI binaries. This approach is being replaced by a dedicated console-downloads image
(openshift/console Dockerfile.downloads) that contains a purpose-built Golang HTTP server with its own entrypoint, making the inline Python
script unnecessary.

Jira: https://redhat.atlassian.net/browse/CONSOLE-5293

Solution description:

  1. manifests/07-operator.yaml and manifests/07-operator-ibm-cloud-managed.yaml — Updated the DOWNLOADS_IMAGE env var from registry.svc.ci.openshift.org/openshift:cli-artifacts to
    registry.svc.ci.openshift.org/openshift:console-downloads.
  2. bindata/assets/deployments/downloads-deployment.yaml — Removed the inline Python HTTP server script (command, args), the /tmp volumeMount, and the tmp emptyDir volume. The new
    console-downloads image has its own entrypoint (/opt/downloads/downloads --config-path=/opt/downloads/defaultArtifactsConfig.yaml), so no custom command/args are needed.

No Go code changes were required — the operator reads the deployment YAML from bindata and sets the image from the DOWNLOADS_IMAGE env var, which continues to work as before.

Test setup:

The console-downloads image must be present in the release payload. Ensure the image is built and available via the CI config in openshift/release.

Test cases:

  • Verify the downloads deployment starts successfully with the new console-downloads image
  • Verify the downloads page at https://downloads-openshift-console.apps.<cluster>/ serves CLI binaries correctly
  • Verify oc download links for all architectures (amd64, arm64, ppc64le, s390x) and platforms (linux, mac, windows) are functional
  • Verify the liveness and readiness probes pass on port 8080
  • Verify the operator reconciles correctly after a fresh install
  • Verify the operator reconciles correctly on upgrade from a version using cli-artifacts

Needs to be tested with openshift/console#16455

Browser conformance:

  • Chrome
  • Firefox
  • Safari (or Epiphany on Linux)

N/A — this is a backend/operator change with no UI modifications. Downloads page was verified accessible via Chrome.

Additional info:

This is a net deletion of ~200 lines of inline Python. The new Golang-based downloads server in the console-downloads image provides the same functionality with better performance and maintainability.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: af1d4d7a-0e2b-47a8-8252-e5d4037fabae

📥 Commits

Reviewing files that changed from the base of the PR and between 8ce4481 and 97735a7.

⛔ Files ignored due to path filters (1)
  • pkg/console/subresource/deployment/deployment_test.go is excluded by !**/*_test.go
📒 Files selected for processing (3)
  • bindata/assets/deployments/downloads-deployment.yaml
  • manifests/07-operator-ibm-cloud-managed.yaml
  • manifests/07-operator.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • manifests/07-operator-ibm-cloud-managed.yaml
  • manifests/07-operator.yaml
  • bindata/assets/deployments/downloads-deployment.yaml
📜 Recent review details
🧰 Additional context used
🔀 Multi-repo context openshift/console

Findings for openshift/console:

  • Dockerfile.downloads uses origin-cli-artifacts as base:

    • [::openshift/console::Dockerfile.downloads:1] FROM quay.io/openshift/origin-cli-artifacts:4.22 AS origincli
    • [::openshift/console::Dockerfile.downloads:36] image label io.openshift.tags="openshift,cli-artifacts"
  • README still documents the old image:

    • [::openshift/console::README.md:443] "The server provides oc binaries from the quay.io/repository/openshift/origin-cli-artifacts image."
    • [::openshift/console::README.md:463] notes origin-cli-artifacts platform caveat.
  • No occurrences of "console-downloads" found in repository search output.

Implication: The operator PR changes manifests to use an image tag "console-downloads", but this repository currently builds/labels an image based on origin-cli-artifacts/cli-artifacts (Dockerfile.downloads). CI (openshift/release) must build and publish a console-downloads image (likely from this Dockerfile or a modified build) so the operator's new DOWNLOADS_IMAGE value points to an existing image. README and image labels in this repo may need updating to reflect the new tag.


Walkthrough

The pull request migrates the OpenShift console downloads service from a Python-based HTTP server (cli-artifacts image) to a compiled downloads binary (console-downloads image). The downloads Deployment is updated to directly invoke the binary with a config path, and both operator manifests are updated to reference the new image.

Changes

Downloads Service Migration

Layer / File(s) Summary
Downloads Deployment binary startup
bindata/assets/deployments/downloads-deployment.yaml
The downloads container startup is refactored to run /opt/downloads/downloads --config-path=/opt/downloads/defaultArtifactsConfig.yaml directly, removing the embedded shell script that previously generated /tmp/serve.py and ran a Python HTTP server. The /tmp emptyDir volume mount is removed; security context remains unchanged.
Operator console-downloads image configuration
manifests/07-operator.yaml, manifests/07-operator-ibm-cloud-managed.yaml
Both operator manifests update the DOWNLOADS_IMAGE environment variable from openshift:cli-artifacts to openshift:console-downloads, aligning with the new binary-based service image.

🎯 2 (Simple) | ⏱️ ~8 minutes

🚥 Pre-merge checks | ✅ 12
✅ Passed checks (12 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: replacing the cli-artifacts image with console-downloads and removing the inline Python server.
Description check ✅ Passed The description is comprehensive and follows the template, including analysis, solution details, test setup, test cases, browser conformance, and additional context about the changes.
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.
Stable And Deterministic Test Names ✅ Passed PR does not use Ginkgo; project uses only standard Go testing framework. No Ginkgo dependency in go.mod and no Ginkgo test patterns found. Check is not applicable.
Test Structure And Quality ✅ Passed PR contains no Ginkgo test code. All test files added use standard Go testing (testing.T, t.Run), not Ginkgo (Describe/It). Check is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added in this PR. All changes are YAML configuration files (Deployment manifests and bindata assets). The check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR only modifies YAML deployment and manifest files. No Ginkgo e2e tests were added, so the check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed PR replaces Python server with Go binary and updates image. No new topology-problematic scheduling constraints introduced.
Ote Binary Stdout Contract ✅ Passed PR modifies only YAML manifests, not Go code or test code. OTE Binary Stdout Contract check applies to process-level Go code, which this PR does not contain.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No Ginkgo e2e tests are added in this PR. Changes are YAML manifest updates only (deployment configurations for downloads-deployment and console-operator). Check not applicable.

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

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

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

@openshift-ci openshift-ci Bot requested review from TheRealJon and spadgett May 15, 2026 17:38
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 15, 2026
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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@bindata/assets/deployments/Untitled`:
- Line 1: Delete the stray asset file named "Untitled" that contains only the
token "readOnlyRootFilesystem" from the assets/deployments bundle; remove it
from the repository and any asset-generation lists so it won't be packaged into
bindata, and if the readOnlyRootFilesystem setting was intended for a real
deployment manifest, move that key into the proper deployment YAML (not the
"Untitled" stub).
🪄 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: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 07e1b599-077b-438b-adb5-324ed8e45c96

📥 Commits

Reviewing files that changed from the base of the PR and between ee0e804 and 2e562b9.

📒 Files selected for processing (4)
  • bindata/assets/deployments/Untitled
  • bindata/assets/deployments/downloads-deployment.yaml
  • manifests/07-operator-ibm-cloud-managed.yaml
  • manifests/07-operator.yaml
📜 Review details
🧰 Additional context used
📓 Path-based instructions (2)
manifests/**/*.yaml

⚙️ CodeRabbit configuration file

manifests/**/*.yaml: Review CVO manifests carefully.
These are deployed to clusters and changes have wide impact.

Files:

  • manifests/07-operator-ibm-cloud-managed.yaml
  • manifests/07-operator.yaml
bindata/assets/**/*.yaml

⚙️ CodeRabbit configuration file

bindata/assets/**/*.yaml: Review YAML assets for Kubernetes resource correctness.
Ensure proper annotations for cluster profiles.

Files:

  • bindata/assets/deployments/downloads-deployment.yaml
🔀 Multi-repo context openshift/console

[::openshift/console::] README.md — references the origin-cli-artifacts image and oc binaries from quay.io/repository/openshift/origin-cli-artifacts (match at README.md:443 and README.md:463).

[::openshift/console::] Dockerfile.downloads — builds FROM quay.io/openshift/origin-cli-artifacts:4.18 and labels image as "openshift,cli-artifacts" (matches at Dockerfile.downloads:1 and Dockerfile.downloads:36).

Note: manifests/ and bindata/ were not present in this checkout (shell reported "No such file or directory"), so I could not locate the exact deployment YAML files changed in the PR within this repository.

🔇 Additional comments (1)
bindata/assets/deployments/downloads-deployment.yaml (1)

51-54: LGTM!

Comment thread bindata/assets/deployments/Untitled Outdated
@@ -0,0 +1 @@
readOnlyRootFilesystem No newline at end of file
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot May 15, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove this stray file.

bindata/assets/deployments/Untitled is not valid deployment YAML and looks like an accidental editor artifact. Leaving it under the assets tree risks confusing future maintainers or being swept into asset generation by mistake.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bindata/assets/deployments/Untitled` at line 1, Delete the stray asset file
named "Untitled" that contains only the token "readOnlyRootFilesystem" from the
assets/deployments bundle; remove it from the repository and any
asset-generation lists so it won't be packaged into bindata, and if the
readOnlyRootFilesystem setting was intended for a real deployment manifest, move
that key into the proper deployment YAML (not the "Untitled" stub).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

+1

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@TheRealJon, glad we're on the same page! Once the bindata/assets/deployments/Untitled file is removed from the PR, feel free to let me know and I'll mark this resolved.

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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@bindata/assets/deployments/downloads-deployment.yaml`:
- Around line 51-54: The deployment currently runs the downloads binary
(command: /opt/downloads/downloads) with a readOnlyRootFilesystem but lacks a
writable /tmp, causing the Go server's os.MkdirTemp("", "artifacts") to fail;
update the Downloads Deployment to add a volumeMount for /tmp (mountPath: /tmp)
in the container spec and add a corresponding emptyDir volume (name like tmp or
downloads-tmp) in the pod spec so the container has a writable /tmp when
readOnlyRootFilesystem is true.
🪄 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: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 023cf83e-cb7f-47c2-b8e2-1271d4209157

📥 Commits

Reviewing files that changed from the base of the PR and between 2e562b9 and b427ee2.

⛔ Files ignored due to path filters (1)
  • pkg/console/subresource/deployment/deployment_test.go is excluded by !**/*_test.go
📒 Files selected for processing (4)
  • bindata/assets/deployments/Untitled
  • bindata/assets/deployments/downloads-deployment.yaml
  • manifests/07-operator-ibm-cloud-managed.yaml
  • manifests/07-operator.yaml
✅ Files skipped from review due to trivial changes (1)
  • manifests/07-operator-ibm-cloud-managed.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • bindata/assets/deployments/Untitled
📜 Review details
🧰 Additional context used
📓 Path-based instructions (2)
manifests/**/*.yaml

⚙️ CodeRabbit configuration file

manifests/**/*.yaml: Review CVO manifests carefully.
These are deployed to clusters and changes have wide impact.

Files:

  • manifests/07-operator.yaml
bindata/assets/**/*.yaml

⚙️ CodeRabbit configuration file

bindata/assets/**/*.yaml: Review YAML assets for Kubernetes resource correctness.
Ensure proper annotations for cluster profiles.

Files:

  • bindata/assets/deployments/downloads-deployment.yaml
🔀 Multi-repo context openshift/console

[::openshift/console::] Dockerfile.downloads:1 — FROM quay.io/openshift/origin-cli-artifacts:4.18 (file shows image built-from still references origin-cli-artifacts).
[::openshift/console::] Dockerfile.downloads:36 — image label io.openshift.tags="openshift,cli-artifacts".
[::openshift/console::] README.md:443,463 — README documents that the server provides oc binaries from quay.io/repository/openshift/origin-cli-artifacts and notes origin-cli-artifacts usage for local builds.
[::openshift/console::] Dockerfile.downloads:20-21,28 — the repo already builds and bundles the Go downloads server binary (/opt/downloads/downloads) and defaultArtifactsConfig.yaml; Dockerfile.downloads CMD is "/opt/downloads/downloads --config-path=/opt/downloads/defaultArtifactsConfig.yaml".
[::openshift/console::] cmd/downloads/main.go & cmd/downloads/config/* — implementation of the Go downloads server and config generation present in-tree (server listens on configured port and serves the generated TempDir).

Summary: repository contains the Go downloads server and Dockerfile that builds an image from origin-cli-artifacts base; README also references origin-cli-artifacts. The PR switching operator manifests to use registry.svc.ci.openshift.org/openshift:console-downloads will require the console-downloads image to be produced/pushed (openshift/release) and reconciled with the existing Dockerfile.downloads / README references that still mention origin-cli-artifacts.

🔇 Additional comments (1)
manifests/07-operator.yaml (1)

72-73: LGTM!

Comment on lines +51 to +54
command:
- /opt/downloads/downloads
args:
- --config-path=/opt/downloads/defaultArtifactsConfig.yaml
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 | 🔴 Critical | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Local deployment YAML checks =="
rg -n 'readOnlyRootFilesystem|volumeMounts|emptyDir|/tmp' bindata/assets/deployments/downloads-deployment.yaml

echo
echo "== Linked openshift/console downloads server temp-dir checks =="
BASE="https://raw.githubusercontent.com/openshift/console/main"
for p in \
  cmd/downloads/main.go \
  cmd/downloads/config/config.go \
  cmd/downloads/config/artifacts.go
do
  echo "--- ${p} ---"
  curl -fsSL "${BASE}/${p}" 2>/dev/null | rg -n 'TempDir|MkdirTemp|CreateTemp|os\.TempDir|ioutil\.TempDir' || true
done

Repository: openshift/console-operator

Length of output: 451


🏁 Script executed:

#!/bin/bash
# Get full deployment manifest to see all volumes and volumeMounts
cat -n bindata/assets/deployments/downloads-deployment.yaml

Repository: openshift/console-operator

Length of output: 2991


🏁 Script executed:

#!/bin/bash
# Search for any tmp or temp references in the deployment
rg -n 'tmp|temp|TempDir|volumeMounts|volumes' bindata/assets/deployments/downloads-deployment.yaml -i

Repository: openshift/console-operator

Length of output: 85


🏁 Script executed (no clone):

#!/bin/bash
# Check where TempDir is configured in openshift/console
BASE="https://raw.githubusercontent.com/openshift/console/main"
echo "=== cmd/downloads/config/config.go ===" 
curl -fsSL "${BASE}/cmd/downloads/config/config.go" 2>/dev/null | head -100

echo
echo "=== Searching for TempDir assignment in main.go ===" 
curl -fsSL "${BASE}/cmd/downloads/main.go" 2>/dev/null | head -80

Length of output: 1373


🏁 Script executed (no clone):

#!/bin/bash
# Get the full config.go to see how TempDir is initialized
BASE="https://raw.githubusercontent.com/openshift/console/main"
curl -fsSL "${BASE}/cmd/downloads/config/config.go" 2>/dev/null

Length of output: 14


🏁 Script executed:

#!/bin/bash
# Find config files related to downloads
find . -type f -name "*config*" | grep -i download

Repository: openshift/console

Length of output: 104


🏁 Script executed:

#!/bin/bash
# Search for TempDir initialization pattern
rg -n 'TempDir\s*[:=]|ioutil\.TempDir|os\.MkdirTemp' --type go

Repository: openshift/console

Length of output: 2443


🏁 Script executed (no clone):

#!/bin/bash
# Alternative: check if config exists at a different path or structure
curl -fsSL "https://api.github.com/repos/openshift/console/contents/cmd/downloads/config" 2>/dev/null | jq -r '.[] | "\(.name)"' || echo "API check failed"

Length of output: 79


🏁 Script executed:

#!/bin/bash
# Get the full downloads_config.go to see the TempDir initialization
cat -n cmd/downloads/config/downloads_config.go | sed -n '100,140p'

Repository: openshift/console

Length of output: 1431


🏁 Script executed:

#!/bin/bash
# Check git history to see if /tmp volumes existed before
git log --oneline --all -- bindata/assets/deployments/downloads-deployment.yaml | head -5

Repository: openshift/console-operator

Length of output: 460


🏁 Script executed:

#!/bin/bash
# Check if any recent commits removed volume mounts
git log -p -1 -- bindata/assets/deployments/downloads-deployment.yaml 2>/dev/null | head -100

Repository: openshift/console-operator

Length of output: 3133


Add /tmp volumeMount and emptyDir volume — required for runtime temp directory creation.

The new Go downloads server calls os.MkdirTemp("", "artifacts") at startup (verified in openshift/console cmd/downloads/config/downloads_config.go:112), which creates a temporary directory in the system temp location (typically /tmp). With readOnlyRootFilesystem: true and no writable /tmp volume, pod startup will fail.

Previous commits (ea4062a, 29c40d9) added /tmp volumes when enabling read-only root filesystem. This change removed those volumes when switching to the Go server but did not account for the server's temp directory requirement.

Required patch
       containers:
         - resources:
            requests:
              cpu: 10m
              memory: 50Mi
+          volumeMounts:
+            - name: tmp
+              mountPath: /tmp
           readinessProbe:
       priorityClassName: system-cluster-critical
+      volumes:
+        - name: tmp
+          emptyDir: {}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bindata/assets/deployments/downloads-deployment.yaml` around lines 51 - 54,
The deployment currently runs the downloads binary (command:
/opt/downloads/downloads) with a readOnlyRootFilesystem but lacks a writable
/tmp, causing the Go server's os.MkdirTemp("", "artifacts") to fail; update the
Downloads Deployment to add a volumeMount for /tmp (mountPath: /tmp) in the
container spec and add a corresponding emptyDir volume (name like tmp or
downloads-tmp) in the pod spec so the container has a writable /tmp when
readOnlyRootFilesystem is true.

@jhadvig
Copy link
Copy Markdown
Member Author

jhadvig commented May 18, 2026

/retest

Copy link
Copy Markdown
Member

@TheRealJon TheRealJon left a comment

Choose a reason for hiding this comment

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

Just the stray file to remove, other than that it looks good!

Comment thread bindata/assets/deployments/Untitled Outdated
@@ -0,0 +1 @@
readOnlyRootFilesystem No newline at end of file
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

+1

Replace the cli-artifacts image with the new console-downloads image
for the downloads deployment. The new image contains a Golang HTTP
server with its own entrypoint, so the inline Python server script
and associated command/args/volumes are removed from the deployment
template.
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 27, 2026

@jhadvig: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-azure-ovn-upgrade 97735a7 link true /test e2e-azure-ovn-upgrade
ci/prow/e2e-aws-console 97735a7 link true /test e2e-aws-console
ci/prow/e2e-gcp-ovn 97735a7 link true /test e2e-gcp-ovn

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Copy link
Copy Markdown
Member

@TheRealJon TheRealJon left a comment

Choose a reason for hiding this comment

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

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label May 27, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 27, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jhadvig, TheRealJon

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

The pull request process is described 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

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants