Skip to content

OCPBUGS-87841: ci-operator/step-registry/ipi/install/install: Unpack log-bundle archives#80479

Open
wking wants to merge 1 commit into
openshift:mainfrom
wking:unpack-log-bundle-archive
Open

OCPBUGS-87841: ci-operator/step-registry/ipi/install/install: Unpack log-bundle archives#80479
wking wants to merge 1 commit into
openshift:mainfrom
wking:unpack-log-bundle-archive

Conversation

@wking

@wking wking commented Jun 12, 2026

Copy link
Copy Markdown
Member

LeakTK currently redacts the entire archive if it finds concerning content, like:

$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview/2063201609579499520/artifacts/e2e-aws-ovn-techpreview/ipi-install-install/artifacts/log-bundle-20260606110924.tar
This file contained potentially sensitive information and has been removed.

If we unpack the archive first, LeakTK will scan and redact at the file level, and not at the whole-archive level. And folks who know which file they want will be able to access that file without pulling down the entire archive.

As a downside for me, I often don't know which file I want, and downloading the archive and unpacking locally was a convenient way to get all the bits for local grep. But I'll survive, and an entirely-redacted archive was helping nobody.

Summary by CodeRabbit

This PR modifies the OpenShift CI ipi/install step to unpack log-bundle archives after cluster installation, rather than preserving them as compressed tar archives.

What changed:
The populate_artifact_dir() function in the ipi-install-install-commands.sh step now extracts log-bundle tar.gz archives into the artifact directory using tar -xzf instead of copying the archive file as-is.

Why this matters:
LeakTK, the security scanning tool used in CI, would previously redact entire archives if it detected sensitive content within them, making the entire archive inaccessible. By unpacking archives first, LeakTK can now scan and redact at the individual file level, allowing users to access specific files without needing to download and unpack complete archives locally. This improves the usability of CI artifacts while maintaining security redaction of sensitive information.

Impact:
This affects all OpenShift installation CI jobs that use the ipi/install/install step. Installation logs and related artifacts will now be available as individual unpacked files in the shared artifacts directory rather than as compressed archives.

…ives

LeakTK currently redacts the entire archive if it finds concerning
content, like [1]:

  $ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview/2063201609579499520/artifacts/e2e-aws-ovn-techpreview/ipi-install-install/artifacts/log-bundle-20260606110924.tar
  This file contained potentially sensitive information and has been removed.

If we unpack the archive first, LeakTK will scan and redact at the
file level, and not at the whole-archive level.  And folks who know
which file they want will be able to access that file without pulling
down the entire archive.

As a downside for me, I often don't know which file I want, and
downloading the archive and unpacking locally was a convenient way to
get all the bits for local grep.  But I'll survive, and an
entirely-redacted archive was helping nobody.

[1]: https://redhat.atlassian.net/browse/OCPBUGS-87841
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@wking: This pull request explicitly references no jira issue.

Details

In response to this:

LeakTK currently redacts the entire archive if it finds concerning content, like:

$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview/2063201609579499520/artifacts/e2e-aws-ovn-techpreview/ipi-install-install/artifacts/log-bundle-20260606110924.tar
This file contained potentially sensitive information and has been removed.

If we unpack the archive first, LeakTK will scan and redact at the file level, and not at the whole-archive level. And folks who know which file they want will be able to access that file without pulling down the entire archive.

As a downside for me, I often don't know which file I want, and downloading the archive and unpacking locally was a convenient way to get all the bits for local grep. But I'll survive, and an entirely-redacted archive was helping nobody.

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.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 12, 2026
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The PR modifies the IPI install step to extract log bundle archives into the shared artifact directory instead of copying the archive files themselves. This changes what artifacts become available downstream from the install step.

Changes

Log Bundle Extraction

Layer / File(s) Summary
Extract log bundles instead of copying archives
ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh
The populate_artifact_dir function extracts log-bundle-*.tar.gz archives into ARTIFACT_DIR using tar -xzf instead of copying the archives, with tar errors suppressed.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested labels

rehearsals-ack


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error FAIL: Script prints install-config.yaml to stdout via cat ... | grep -v ... | tee ${ARTIFACT_DIR}/install-config.yaml (line 738), only partially redacting sensitive fields, so internal hostnames/... Avoid tee/cat to stdout; or fully redact internal-hostname/customer-data fields before printing, and write to artifacts without echoing full config content.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (13 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
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 #80479 changes only ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh; that file has no Ginkgo It/Describe/Context/When titles with dynamic values.
Test Structure And Quality ✅ Passed This PR modifies a bash shell script (ipi-install-install-commands.sh), not Ginkgo test code. The custom check for Ginkgo test quality is not applicable.
Microshift Test Compatibility ✅ Passed This PR modifies a bash CI installation script, not e2e test code. The MicroShift compatibility check applies only to new Ginkgo tests, which this PR does not add.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR change is limited to a ci-operator shell script (log-bundle extraction); it does not add/modify any Ginkgo e2e tests, so no SNO multi-node assumptions to assess.
Topology-Aware Scheduling Compatibility ✅ Passed PR only updates ipi-install-install-commands.sh log-bundle handling (cp -> tar extract) in populate_artifact_dir; no Kubernetes manifests/controllers or scheduling constraints added.
Ote Binary Stdout Contract ✅ Passed The OTE Binary Stdout Contract check is for Go test binaries (Ginkgo suites, klog, fmt.Print). This PR modifies only a shell script (ipi-install-install-commands.sh) for CI infrastructure; not appl...
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR modifies CI step script (ipi-install-install-commands.sh), not new Ginkgo e2e tests; custom check for test IPv6 compatibility is not applicable.
No-Weak-Crypto ✅ Passed Reviewed ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh for MD5/SHA1/DES/RC4/3DES/Blowfish/ECB and token/secret comparisons; none found (only tar -xzf log-bundle unpa...
Container-Privileges ✅ Passed PR modifies only a bash shell script for log extraction; no container/K8s privilege settings (privileged, hostPID, hostNetwork, SYS_ADMIN, etc.) are added or changed.
Title check ✅ Passed The title clearly and specifically describes the main change: unpacking log-bundle archives in the ipi/install step, which directly aligns with the changeset that modifies tar handling from copy to extract.
✨ 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 smg247 and stbenjam June 12, 2026 16:16

@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 current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh`:
- Line 111: The single tar invocation using the glob
"${dir}"/log-bundle-*.tar.gz fails when the glob matches multiple archives;
replace that single command with logic that iterates over each matching file and
extracts them individually into "${ARTIFACT_DIR}" (i.e., for each file matching
"${dir}"/log-bundle-*.tar.gz, skip if no match, and run tar -xzf on that file
with -C "${ARTIFACT_DIR}" redirecting stderr as before) so each archive is
unpacked separately.
🪄 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: 19d08bcc-e4fe-4a40-a0ce-35bf4d061a06

📥 Commits

Reviewing files that changed from the base of the PR and between be29100 and 447b828.

📒 Files selected for processing (1)
  • ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh


current_time=$(date +%s)
cp "${dir}"/log-bundle-*.tar.gz "${ARTIFACT_DIR}/" 2>/dev/null
tar -xzf "${dir}"/log-bundle-*.tar.gz -C "${ARTIFACT_DIR}/" 2>/dev/null

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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh"

# Show shell header and around the target line, plus any log-bundle handling
echo "== File header =="
sed -n '1,80p' "$FILE" | nl -ba | sed 's/^/LINE /'

echo
echo "== log-bundle occurrences (with context) =="
rg -n "log-bundle" "$FILE" || true

echo
echo "== Around line 111 =="
sed -n '90,140p' "$FILE" | nl -ba | sed 's/^/LINE /'

Repository: openshift/release

Length of output: 140


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# tar behavior experiment: simulate wildcard expansion into multiple archives
set -euo pipefail
tmp=$(mktemp -d)
echo "tmp=$tmp"
src="$tmp/src"
mkdir -p "$src"
dest="$tmp/dest"
mkdir -p "$dest"

# Create two distinct tar.gz archives
mkdir -p "$src/a" "$src/b"
echo "from a" > "$src/a/file-a.txt"
echo "from b" > "$src/b/file-b.txt"

# Need GNU tar to create .tar.gz
tar -czf "$tmp/log-bundle-1.tar.gz" -C "$src/a" file-a.txt
tar -czf "$tmp/log-bundle-2.tar.gz" -C "$src/b" file-b.txt

echo "== Extract using wildcard-expanded multi-archive argument (matches original pattern) =="
rm -rf "$dest"/*
# This replicates: tar -xzf "${dir}"/log-bundle-*.tar.gz -C "${ARTIFACT_DIR}/"
# where the glob expands to multiple .tar.gz paths.
tar -xzf "$tmp"/log-bundle-*.tar.gz -C "$dest" 2>&1 | head -n 50 || true

echo "Extracted files:"
find "$dest" -maxdepth 2 -type f -print | sed 's/^/ - /'
echo "Contents:"
for f in $(find "$dest" -type f | sort); do
  echo "---- $f"
  cat "$f"
done

echo
echo "== Extract using loop over each archive (proposed fix) =="
rm -rf "$dest"/*
for bundle in "$tmp"/log-bundle-*.tar.gz; do
  tar -xzf "$bundle" -C "$dest" 2>/dev/null
done
echo "Extracted files:"
find "$dest" -maxdepth 2 -type f -print | sed 's/^/ - /'

Repository: openshift/release

Length of output: 477


🏁 Script executed:

#!/bin/bash
set -euo pipefail
echo "tar version:"
tar --version 2>/dev/null | head -n 5 || true

Repository: openshift/release

Length of output: 344


🌐 Web query:

GNU tar: behavior when extracting with -f and multiple archive filenames on command line treated as members

💡 Result:

In GNU tar, the -f (or --file) option is used to specify the archive file or device to operate on [1][2][3]. When you provide multiple -f options on the command line, GNU tar interprets them as successive volumes of a single multi-volume archive, not as multiple separate archives to extract simultaneously [1][4][5]. When extracting with -f, any arguments appearing on the command line that are not options (i.e., non-option arguments) are treated by GNU tar as the names of archive members to be extracted from that archive [6][7][8][9]. If no member names are provided as non-option arguments, GNU tar performs the operation on the entire contents of the archive [6][7]. In summary: - Multiple -f options: These define a sequence of volumes for a single multi-volume archive [1][4][5]. - Non-option arguments after -f: These are treated as the specific files (members) within that archive to act upon [6][7][9]. If you intend to extract from multiple distinct archive files, you must run separate tar commands for each archive, as GNU tar does not support extracting from multiple independent archive files in a single invocation [1][10]. Attempting to provide multiple filenames as arguments to a single -f option (e.g., tar -x -f archive1.tar archive2.tar) would result in tar treating 'archive2.tar' as an archive member name to look for inside 'archive1.tar', rather than as a separate archive file [6][7][3].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail
FILE="ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh"

echo "== Shebang/top 40 lines =="
sed -n '1,40p' "$FILE" | cat -n

echo
echo "== log-bundle related lines (near occurrences) =="
rg -n "log-bundle" "$FILE"

echo
echo "== Around line 100-130 (with line numbers) =="
awk 'NR>=90 && NR<=130 {printf "%4d: %s\n", NR, $0}' "$FILE"

Repository: openshift/release

Length of output: 4768


🏁 Script executed:

#!/bin/bash
set -euo pipefail
FILE="ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh"
echo "== Around log-bundle workaround (240-320) =="
sed -n '240,320p' "$FILE" | nl -ba | sed 's/^/LINE /'

Repository: openshift/release

Length of output: 167


🏁 Script executed:

#!/bin/bash
set -euo pipefail
FILE="ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh"
awk 'NR>=240 && NR<=320 {printf "%4d: %s\n", NR, $0}' "$FILE"

Repository: openshift/release

Length of output: 4408


🏁 Script executed:

#!/bin/bash
set -euo pipefail
FILE="ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh"

echo "== log-bundle in this file =="
rg -n "log-bundle" "$FILE"

echo
echo "== Other occurrences repo-wide (limited) =="
rg -n "log-bundle-\\*\\.tar\\.gz" . -S || true

echo
echo "== Any creation of log bundles (tar -czf + log-bundle) repo-wide (limited) =="
rg -n "tar\\s+-c[^\\n]*log-bundle" . -S || true

echo
echo "== Any deletion/cleanup of log bundle archives repo-wide (limited) =="
rg -n "rm\\s+-f[^\\n]*log-bundle|rm\\s+-r[^\\n]*log-bundle" . -S || true

Repository: openshift/release

Length of output: 6274


🏁 Script executed:

#!/bin/bash
set -euo pipefail
FILE="ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh"
rg -n "nullglob|shopt" "$FILE" || true

Repository: openshift/release

Length of output: 43


Fix log-bundle extraction when the glob matches multiple archives

At line 111, tar -xzf "${dir}"/log-bundle-*.tar.gz ... fails when the glob expands to more than one log-bundle-*.tar.gz (GNU tar treats the extra filenames as members of the first archive), so additional log bundles won’t be extracted into ${ARTIFACT_DIR}.

Suggested fix
-  tar -xzf "${dir}"/log-bundle-*.tar.gz -C "${ARTIFACT_DIR}/" 2>/dev/null
+  shopt -s nullglob
+  for bundle in "${dir}"/log-bundle-*.tar.gz; do
+    tar -xzf "${bundle}" -C "${ARTIFACT_DIR}/" 2>/dev/null
+  done
+  shopt -u nullglob
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tar -xzf "${dir}"/log-bundle-*.tar.gz -C "${ARTIFACT_DIR}/" 2>/dev/null
shopt -s nullglob
for bundle in "${dir}"/log-bundle-*.tar.gz; do
tar -xzf "${bundle}" -C "${ARTIFACT_DIR}/" 2>/dev/null
done
shopt -u nullglob
🤖 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
`@ci-operator/step-registry/ipi/install/install/ipi-install-install-commands.sh`
at line 111, The single tar invocation using the glob
"${dir}"/log-bundle-*.tar.gz fails when the glob matches multiple archives;
replace that single command with logic that iterates over each matching file and
extracts them individually into "${ARTIFACT_DIR}" (i.e., for each file matching
"${dir}"/log-bundle-*.tar.gz, skip if no match, and run tar -xzf on that file
with -C "${ARTIFACT_DIR}" redirecting stderr as before) so each archive is
unpacked separately.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@wking: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
pull-ci-openshift-cloud-provider-nutanix-main-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-5.1-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-5.0-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.23-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.22-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.21-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.20-regression-clusterinfra-nutanix-ipi-ccm openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-main-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-5.1-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-5.0-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.23-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.22-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.21-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.20-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.19-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.18-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.17-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.16-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.15-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.14-e2e-nutanix-windows openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-main-okd-scos-e2e-aws-ovn openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-4.21-okd-scos-e2e-aws-ovn openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-main-e2e-nutanix openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-5.1-e2e-nutanix openshift/cloud-provider-nutanix presubmit Registry content changed
pull-ci-openshift-cloud-provider-nutanix-release-5.0-e2e-nutanix openshift/cloud-provider-nutanix presubmit Registry content changed

A total of 30321 jobs have been affected by this change. The above listing is non-exhaustive and limited to 25 jobs.

A full list of affected jobs can be found here
Prior to this PR being merged, you will need to either run and acknowledge or opt to skip these rehearsals.

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@wking

wking commented Jun 12, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-serial-runc

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@wking: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@wking

wking commented Jun 12, 2026

Copy link
Copy Markdown
Member Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@wking: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@patrickdillon

Copy link
Copy Markdown
Contributor

/retitle OCPBUGS-87841: ci-operator/step-registry/ipi/install/install: Unpack log-bundle archives

@openshift-ci openshift-ci Bot changed the title NO-ISSUE: ci-operator/step-registry/ipi/install/install: Unpack log-bundle archives OCPBUGS-87841: ci-operator/step-registry/ipi/install/install: Unpack log-bundle archives Jun 12, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@wking: This pull request references Jira Issue OCPBUGS-87841, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

LeakTK currently redacts the entire archive if it finds concerning content, like:

$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/periodic-ci-openshift-release-main-ci-5.0-e2e-aws-ovn-techpreview/2063201609579499520/artifacts/e2e-aws-ovn-techpreview/ipi-install-install/artifacts/log-bundle-20260606110924.tar
This file contained potentially sensitive information and has been removed.

If we unpack the archive first, LeakTK will scan and redact at the file level, and not at the whole-archive level. And folks who know which file they want will be able to access that file without pulling down the entire archive.

As a downside for me, I often don't know which file I want, and downloading the archive and unpacking locally was a convenient way to get all the bits for local grep. But I'll survive, and an entirely-redacted archive was helping nobody.

Summary by CodeRabbit

This PR modifies the OpenShift CI ipi/install step to unpack log-bundle archives after cluster installation, rather than preserving them as compressed tar archives.

What changed:
The populate_artifact_dir() function in the ipi-install-install-commands.sh step now extracts log-bundle tar.gz archives into the artifact directory using tar -xzf instead of copying the archive file as-is.

Why this matters:
LeakTK, the security scanning tool used in CI, would previously redact entire archives if it detected sensitive content within them, making the entire archive inaccessible. By unpacking archives first, LeakTK can now scan and redact at the individual file level, allowing users to access specific files without needing to download and unpack complete archives locally. This improves the usability of CI artifacts while maintaining security redaction of sensitive information.

Impact:
This affects all OpenShift installation CI jobs that use the ipi/install/install step. Installation logs and related artifacts will now be available as individual unpacked files in the shared artifacts directory rather than as compressed archives.

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.

@openshift-ci-robot openshift-ci-robot added the jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Jun 12, 2026
@patrickdillon

Copy link
Copy Markdown
Contributor

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jun 12, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@patrickdillon: This pull request references Jira Issue OCPBUGS-87841, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh

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.

@patrickdillon

Copy link
Copy Markdown
Contributor

/approve
/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 12, 2026
@openshift-ci

openshift-ci Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: patrickdillon, wking

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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 12, 2026
@openshift-ci

openshift-ci Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@wking: 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/rehearse/openshift/kubernetes-autoscaler/release-4.23/regression-clusterinfra-aws-ipi-proxy-autoscaler 447b828 link unknown /pj-rehearse pull-ci-openshift-kubernetes-autoscaler-release-4.23-regression-clusterinfra-aws-ipi-proxy-autoscaler
ci/rehearse/openshift/kubernetes-autoscaler/release-5.1/regression-clusterinfra-aws-ipi-proxy-autoscaler 447b828 link unknown /pj-rehearse pull-ci-openshift-kubernetes-autoscaler-release-5.1-regression-clusterinfra-aws-ipi-proxy-autoscaler
ci/rehearse/openshift/kubernetes-autoscaler/release-4.22/regression-clusterinfra-aws-ipi-proxy-autoscaler 447b828 link unknown /pj-rehearse pull-ci-openshift-kubernetes-autoscaler-release-4.22-regression-clusterinfra-aws-ipi-proxy-autoscaler
ci/rehearse/openshift/kubernetes-autoscaler/main/regression-clusterinfra-aws-ipi-proxy-autoscaler 447b828 link unknown /pj-rehearse pull-ci-openshift-kubernetes-autoscaler-main-regression-clusterinfra-aws-ipi-proxy-autoscaler
ci/rehearse/openshift/kubernetes-autoscaler/release-5.0/regression-clusterinfra-aws-ipi-proxy-autoscaler 447b828 link unknown /pj-rehearse pull-ci-openshift-kubernetes-autoscaler-release-5.0-regression-clusterinfra-aws-ipi-proxy-autoscaler

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.

@stbenjam

Copy link
Copy Markdown
Member

Some logs is better than no logs, but I hope we can eventually find a better solution that preserves the log bundle tar

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-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. 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.

4 participants