Skip to content

OCPBUGS-99941: replace invalid pip-install input with explicit pip install step - #9133

Closed
dhgautam99 wants to merge 1 commit into
openshift:mainfrom
dhgautam99:fix-mkdocs-command-failure
Closed

OCPBUGS-99941: replace invalid pip-install input with explicit pip install step#9133
dhgautam99 wants to merge 1 commit into
openshift:mainfrom
dhgautam99:fix-mkdocs-command-failure

Conversation

@dhgautam99

@dhgautam99 dhgautam99 commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

The pip-install input is no longer a valid input for actions/setup-python, causing the "Build Docs" CI job to fail with mkdocs: command not found on all PRs. This replaces the invalid input with an explicit pip install -r docs/requirements.txt step.

Which issue(s) this PR fixes:

Fixes OCPBUGS-99941

Special notes for your reviewer:

This is a repo-wide CI fix — the "Build Docs" job is currently broken for new PRs (e.g., #9132 and #8878). The pip-install input was introduced in PR #8386 and worked initially, but actions/setup-python has since removed it as a valid input.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Chores
    • Improved the documentation build workflow by adding an explicit documentation dependency installation step.
    • Documentation builds now install requirements from the designated docs/requirements.txt file consistently.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci openshift-ci Bot added do-not-merge/needs-area area/api Indicates the PR includes changes for the API area/cli Indicates the PR includes changes for CLI labels Jul 27, 2026
@openshift-ci
openshift-ci Bot requested review from cblecker and devguyio July 27, 2026 20:09
@openshift-ci openshift-ci Bot added area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform and removed do-not-merge/needs-area labels Jul 27, 2026
…t pip install step

The `pip-install` input is no longer a valid input for
`actions/setup-python`, causing the docs build to fail with
`mkdocs: command not found` across all PRs. Replace it with an
explicit `pip install -r docs/requirements.txt` step.
@dhgautam99
dhgautam99 force-pushed the fix-mkdocs-command-failure branch from 7d9622b to 5ce39c5 Compare July 27, 2026 20:10
@openshift-ci

openshift-ci Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dhgautam99
Once this PR has been reviewed and has the lgtm label, please assign cblecker for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@dhgautam99 dhgautam99 changed the title fix(ci): OCPBUGS-99941 replace invalid pip-install input with explicit pip install step OCPBUGS-99941: replace invalid pip-install input with explicit pip install step Jul 27, 2026
@openshift-ci-robot openshift-ci-robot added jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jul 27, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@dhgautam99: This pull request references Jira Issue OCPBUGS-99941, 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:

What this PR does / why we need it:

The pip-install input is no longer a valid input for actions/setup-python, causing the "Build Docs" CI job to fail with mkdocs: command not found on all PRs. This replaces the invalid input with an explicit pip install -r docs/requirements.txt step.

Which issue(s) this PR fixes:

Fixes OCPBUGS-99941

Special notes for your reviewer:

This is a repo-wide CI fix — the "Build Docs" job is currently broken for all PRs (e.g., #9132). The pip-install input was introduced in PR #8386 and worked initially, but actions/setup-python has since removed it as a valid input.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

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.

@dhgautam99

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot

Copy link
Copy Markdown

@dhgautam99: This pull request references Jira Issue OCPBUGS-99941, 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.

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.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The reusable documentation build workflow replaces the previous pip-install configuration with an explicitly named “Install documentation dependencies” step that runs pip install -r docs/requirements.txt.

Suggested reviewers: cblecker, devguyio

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
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 Only a docs workflow file changed; no Ginkgo tests or test titles were added or modified.
Test Structure And Quality ✅ Passed No Ginkgo test code changed; this PR only edits a docs CI workflow, so the test-quality check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed Only the docs-build workflow changed; it removes a pip-install input and adds a dependency install step, with no manifests, operators, or scheduling logic touched.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed Only a docs-build workflow changed; no new Ginkgo e2e tests or network-sensitive test code were added.
No-Weak-Crypto ✅ Passed The only changed file is a docs workflow, and the patch contains no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB or secret-comparison code.
Container-Privileges ✅ Passed Diff only changes a docs-build workflow; no container/K8s manifest or privileged settings appear in the PR.
No-Sensitive-Data-In-Logs ✅ Passed The workflow only adds a docs dependency install step and echoes the PR number; no passwords, tokens, PII, hostnames, or customer data are logged.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main CI workflow change and references the linked bug.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@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: 2

🧹 Nitpick comments (5)
control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go (1)

93-100: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Prefer .LogLevel != nil over whole-struct comparison for consistency and future-safety.

Every sibling component (kcm, kube-scheduler, oapi) checks X.LogLevel != nil, but this file compares the entire EtcdOperatorSpec struct against its zero value. It's equivalent today, but inconsistent, and a Go struct equality (!=) will fail to compile if a non-comparable field (slice/map) is ever added to ComponentLogLevelSpec/EtcdOperatorSpec.

♻️ Proposed fix
 		if hcp.Spec.OperatorConfiguration != nil &&
-			hcp.Spec.OperatorConfiguration.Etcd != (hyperv1.EtcdOperatorSpec{}) {
+			hcp.Spec.OperatorConfiguration.Etcd.LogLevel != nil {
🤖 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 `@control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go`
around lines 93 - 100, Update the Etcd environment-variable guard in the hosted
control plane StatefulSet construction to check
hcp.Spec.OperatorConfiguration.Etcd.LogLevel != nil instead of comparing the
entire EtcdOperatorSpec with its zero value. Preserve the existing
ETCD_LOG_LEVEL assignment and conversion through util.LogLevelToEtcdLevel.
control-plane-operator/controllers/hostedcontrolplane/v2/kcm/deployment.go (1)

25-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Redundant nil-check duplicated identically across every component's verbosity resolver. util.LogLevelToKlogVerbosity already returns the default (2) when passed a nil *LogLevel, so the extra X.LogLevel != nil guard in each resolveXXXVerbosity is dead code, copy-pasted across at least three component packages (likely more, e.g. oauth/oauth_apiserver/ocm, not in this batch).

  • control-plane-operator/controllers/hostedcontrolplane/v2/kcm/deployment.go#L25-L32: drop the KubeControllerManager.LogLevel != nil check; return util.LogLevelToKlogVerbosity(hcp.Spec.OperatorConfiguration.KubeControllerManager.LogLevel) once OperatorConfiguration != nil is confirmed.
  • control-plane-operator/controllers/hostedcontrolplane/v2/kube_scheduler/deployment.go#L46-L53: same simplification for KubeScheduler.LogLevel.
  • control-plane-operator/controllers/hostedcontrolplane/v2/oapi/deployment.go#L124-L131: same simplification for OpenShiftAPIServer.LogLevel.

Consider extracting a single shared helper in support/util (e.g. taking the resolved *hyperv1.OperatorConfiguration and a field-accessor) to prevent this boilerplate from spreading further as more components adopt log-level configuration.

🤖 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 `@control-plane-operator/controllers/hostedcontrolplane/v2/kcm/deployment.go`
around lines 25 - 32, Remove the redundant LogLevel nil checks from
resolveKCMVerbosity in
control-plane-operator/controllers/hostedcontrolplane/v2/kcm/deployment.go:25-32,
resolveKubeSchedulerVerbosity in
control-plane-operator/controllers/hostedcontrolplane/v2/kube_scheduler/deployment.go:46-53,
and resolveOAPIVerbosity in
control-plane-operator/controllers/hostedcontrolplane/v2/oapi/deployment.go:124-131;
after confirming OperatorConfiguration is non-nil, pass each component’s
LogLevel directly to util.LogLevelToKlogVerbosity and retain the existing
default path. A shared helper is optional and not required for these changes.
control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go (1)

1064-1183: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test case names don't follow the "When ... it should ..." convention.

These new entries ("Default feature set, KAS Debug log level", etc.) keep the existing table's naming style, but the sibling resolver tests added in this same PR (kas/deployment_test.go, etcd/etcd_test.go) do follow "When ... it should ..." per repo convention.

As per path instructions, "Always use "When ... it should ..." format for describing test cases when creating unit tests" for **/*_test.go.

🤖 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
`@control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go`
around lines 1064 - 1183, Rename the new table-driven test cases in the
HostedControlPlane test to follow the “When ... it should ...” convention,
including the affected KAS, Etcd, KCM, KubeScheduler, OCM, OpenShift API Server,
OAuth API Server, and OAuth Server debug log-level cases. Keep each case’s
feature set, mutation, and subDirSuffix unchanged.

Source: Path instructions

support/util/loglevel.go (1)

7-36: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Name the logging protocol constants.

The 2/4/6/8 verbosity values and "info"/"debug" strings encode external logging contracts but are currently unnamed. Define constants so future changes do not require interpreting magic values.

As per coding guidelines, “Avoid magic numbers — use named constants.”

Proposed refactor
 package util
 
+const (
+	defaultKlogVerbosity      = 2
+	debugKlogVerbosity        = 4
+	traceKlogVerbosity        = 6
+	traceAllKlogVerbosity     = 8
+	etcdInfoLogLevel          = "info"
+	etcdDebugLogLevel         = "debug"
+)
+
🤖 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 `@support/util/loglevel.go` around lines 7 - 36, Define named constants for the
klog verbosity levels 2, 4, 6, and 8, plus the ETCD log levels "info" and
"debug", then update LogLevelToKlogVerbosity and LogLevelToEtcdLevel to return
those constants instead of literals.

Source: Coding guidelines

control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go (1)

220-221: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Centralize the default verbosity across all component resolvers.

The three resolvers duplicate the shared default 2, allowing component behavior to drift if the logging contract changes.

  • control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go#L220-L221: replace the hardcoded fallback with the shared default.
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth/deployment.go#L131-L132: replace the hardcoded fallback with the shared default.
  • control-plane-operator/controllers/hostedcontrolplane/v2/oauth_apiserver/deployment.go#L103-L104: replace the hardcoded fallback with the shared default.
🤖 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 `@control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go`
around lines 220 - 221, Replace the hardcoded verbosity fallback in the resolver
at
control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go:220-221
with the shared default symbol. Apply the same change to the fallback resolvers
at
control-plane-operator/controllers/hostedcontrolplane/v2/oauth/deployment.go:131-132
and
control-plane-operator/controllers/hostedcontrolplane/v2/oauth_apiserver/deployment.go:103-104,
preserving the existing resolver behavior while centralizing the default.

Source: Coding guidelines

🤖 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
`@control-plane-operator/controllers/hostedcontrolplane/v2/kube_scheduler/deployment.go`:
- Around line 40-41: Update adaptDeployment to remove any existing static
kube-scheduler verbosity flag, including -v=2, from c.Args before appending the
value generated by resolveSchedulerVerbosity(cpContext.HCP), ensuring only the
dynamic verbosity flag remains.

In `@control-plane-operator/controllers/hostedcontrolplane/v2/ocm/deployment.go`:
- Around line 15-19: Add unit-test coverage for adaptDeployment, using a
Deployment containing the OCM container and a configured HCP verbosity level,
then assert the container receives the expected --v=<n> argument after
adaptation. Keep TestResolveOCMVerbosity focused on the resolver and verify the
mutation path through adaptDeployment directly.

---

Nitpick comments:
In
`@control-plane-operator/controllers/hostedcontrolplane/hostedcontrolplane_controller_test.go`:
- Around line 1064-1183: Rename the new table-driven test cases in the
HostedControlPlane test to follow the “When ... it should ...” convention,
including the affected KAS, Etcd, KCM, KubeScheduler, OCM, OpenShift API Server,
OAuth API Server, and OAuth Server debug log-level cases. Keep each case’s
feature set, mutation, and subDirSuffix unchanged.

In
`@control-plane-operator/controllers/hostedcontrolplane/v2/etcd/statefulset.go`:
- Around line 93-100: Update the Etcd environment-variable guard in the hosted
control plane StatefulSet construction to check
hcp.Spec.OperatorConfiguration.Etcd.LogLevel != nil instead of comparing the
entire EtcdOperatorSpec with its zero value. Preserve the existing
ETCD_LOG_LEVEL assignment and conversion through util.LogLevelToEtcdLevel.

In `@control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go`:
- Around line 220-221: Replace the hardcoded verbosity fallback in the resolver
at
control-plane-operator/controllers/hostedcontrolplane/v2/kas/deployment.go:220-221
with the shared default symbol. Apply the same change to the fallback resolvers
at
control-plane-operator/controllers/hostedcontrolplane/v2/oauth/deployment.go:131-132
and
control-plane-operator/controllers/hostedcontrolplane/v2/oauth_apiserver/deployment.go:103-104,
preserving the existing resolver behavior while centralizing the default.

In `@control-plane-operator/controllers/hostedcontrolplane/v2/kcm/deployment.go`:
- Around line 25-32: Remove the redundant LogLevel nil checks from
resolveKCMVerbosity in
control-plane-operator/controllers/hostedcontrolplane/v2/kcm/deployment.go:25-32,
resolveKubeSchedulerVerbosity in
control-plane-operator/controllers/hostedcontrolplane/v2/kube_scheduler/deployment.go:46-53,
and resolveOAPIVerbosity in
control-plane-operator/controllers/hostedcontrolplane/v2/oapi/deployment.go:124-131;
after confirming OperatorConfiguration is non-nil, pass each component’s
LogLevel directly to util.LogLevelToKlogVerbosity and retain the existing
default path. A shared helper is optional and not required for these changes.

In `@support/util/loglevel.go`:
- Around line 7-36: Define named constants for the klog verbosity levels 2, 4,
6, and 8, plus the ETCD log levels "info" and "debug", then update
LogLevelToKlogVerbosity and LogLevelToEtcdLevel to return those constants
instead of literals.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

Comment on lines 40 to 41
c.Args = append(c.Args, fmt.Sprintf("-v=%d", resolveSchedulerVerbosity(cpContext.HCP)))
})

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.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
fd deployment.yaml control-plane-operator/controllers/hostedcontrolplane/v2/assets/kube-scheduler --exec grep -n -- "-v=" {}

Repository: openshift/hypershift

Length of output: 176


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== asset deployment context =="
fd deployment.yaml control-plane-operator/controllers/hostedcontrolplane/v2/assets/kube-scheduler --exec sed -n '20,45p' {} | cat -n

echo
echo "== controller verbosity construction context =="
fd deployment.go control-plane-operator/controllers/hostedcontrolplane/v2/kube_scheduler --exec sed -n '1,90p' {} | cat -n

echo
echo "== kube-scheduler args in repo =="
rg -n --glob '*.go' --glob '*.yaml' --glob '*.yml' 'kube-scheduler|Args:|resolveSchedulerVerbosity|-v=' control-plane-operator | head -200

Repository: openshift/hypershift

Length of output: 39141


Remove the static kube-scheduler verbosity flag before appending the dynamic one.

control-plane-operator/controllers/hostedcontrolplane/v2/assets/kube-scheduler/deployment.yaml still contains -v=2, so adaptDeployment() appending fmt.Sprintf("-v=%d", resolveSchedulerVerbosity(cpContext.HCP)) can result in duplicate/conflicting verbosity flags on the kube-scheduler container.

🤖 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
`@control-plane-operator/controllers/hostedcontrolplane/v2/kube_scheduler/deployment.go`
around lines 40 - 41, Update adaptDeployment to remove any existing static
kube-scheduler verbosity flag, including -v=2, from c.Args before appending the
value generated by resolveSchedulerVerbosity(cpContext.HCP), ensuring only the
dynamic verbosity flag remains.

Comment on lines +15 to +19
func adaptDeployment(cpContext component.WorkloadContext, deployment *appsv1.Deployment) error {
podspec.UpdateContainer(ComponentName, deployment.Spec.Template.Spec.Containers, func(c *corev1.Container) {
c.Args = append(c.Args, fmt.Sprintf("--v=%d", resolveOCMVerbosity(cpContext.HCP)))
})
return nil

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Add coverage for the Deployment mutation.

TestResolveOCMVerbosity covers the resolver but not this new adaptation path. Add a test that invokes adaptDeployment with a configured level and asserts the OCM container receives the expected --v=<n> argument. As per coding guidelines, “Unit test any code changes and additions.”

🤖 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 `@control-plane-operator/controllers/hostedcontrolplane/v2/ocm/deployment.go`
around lines 15 - 19, Add unit-test coverage for adaptDeployment, using a
Deployment containing the OCM container and a configured HCP verbosity level,
then assert the container receives the expected --v=<n> argument after
adaptation. Keep TestResolveOCMVerbosity focused on the resolver and verify the
mutation path through adaptDeployment directly.

Source: Coding guidelines

@dhgautam99

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added the jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. label Jul 27, 2026
@openshift-ci-robot openshift-ci-robot removed the jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Jul 27, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@dhgautam99: This pull request references Jira Issue OCPBUGS-99941, 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 ASSIGNED, 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.

@openshift-ci-robot

Copy link
Copy Markdown

@dhgautam99: This pull request references Jira Issue OCPBUGS-99941, which is valid.

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 POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

What this PR does / why we need it:

The pip-install input is no longer a valid input for actions/setup-python, causing the "Build Docs" CI job to fail with mkdocs: command not found on all PRs. This replaces the invalid input with an explicit pip install -r docs/requirements.txt step.

Which issue(s) this PR fixes:

Fixes OCPBUGS-99941

Special notes for your reviewer:

This is a repo-wide CI fix — the "Build Docs" job is currently broken for all PRs (e.g., #9132). The pip-install input was introduced in PR #8386 and worked initially, but actions/setup-python has since removed it as a valid input.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Chores
  • Improved the documentation build workflow by explicitly installing documentation dependencies.
  • Documentation builds now use the designated requirements file consistently.

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.

@dhgautam99

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@ironcladlou

Copy link
Copy Markdown
Contributor

I was confused as to how this fixed the issue because your PR's action is still pinned to the old version 6 which still works with the code you're deleting... I realize that it's because you need to rebase from upstream main which is using action version 7 with the deleted option. Which also begs the question how did 9c3cbe7 merge without the docs task failing...

@ironcladlou

Copy link
Copy Markdown
Contributor

I was confused as to how this fixed the issue because your PR's action is still pinned to the old version 6 which still works with the code you're deleting... I realize that it's because you need to rebase from upstream main which is using action version 7 with the deleted option. Which also begs the question how did 9c3cbe7 merge without the docs task failing...

The CodeRabbit review even noticed: #9089 (comment)

@ironcladlou

Copy link
Copy Markdown
Contributor

How do we kick off a test build? I don't see one scheduled even though this change impacts the docs build....

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

Thanks for the quick fix on the pip install step — that's the right approach.

However, this PR also needs to update the paths trigger in .github/workflows/docs-build.yaml to include the reusable workflow file. Currently the trigger only covers:

paths:
  - 'docs/**'
  - '.github/workflows/docs-build.yaml'

This is the root cause of how the regression in #9089 slipped through — changes to .github/workflows/docs-build-reusable.yaml don't trigger the docs build check at all. You can see this is still happening on this very PR: the "Docs Build / build / Build Docs" check is not running, so the fix itself can't actually be verified by CI.

Could you add the reusable workflow to the paths list?

paths:
  - 'docs/**'
  - '.github/workflows/docs-build.yaml'
  - '.github/workflows/docs-build-reusable.yaml'

This way:

  1. The docs build will actually run on this PR, verifying the fix works.
  2. Future changes to the reusable workflow will be caught before merge, preventing a repeat of this regression.

mgencur added a commit to mgencur/hypershift that referenced this pull request Jul 28, 2026
actions/setup-python removed the pip-install input in v7.0.0 (it
installed into the global environment, conflicted with virtualenvs
and tools like uv, and wasn't picked up by Dependabot). Since this
workflow was already pinned to v7.0.0, its pip-install: '-r
docs/requirements.txt' input silently became a no-op, meaning docs
dependencies were never actually installed here.

Replace it with an explicit "pip install -r docs/requirements.txt"
step, matching the fix already proposed in openshift#9133.

Also watch docs-build-reusable.yaml in docs-build.yaml's paths
filter. That filter only watched docs/** and its own file, not the
reusable workflow it calls, which is how this exact breakage (from
PR openshift#9089's actions/setup-python bump) slipped through unnoticed: the
Docs Build check never ran on that PR since the file it changed
wasn't in the filter. Every other trigger/-reusable workflow pair in
this repo already references its reusable file in the paths filter;
this was an isolated gap specific to docs-build.yaml.
mgencur added a commit to mgencur/hypershift that referenced this pull request Jul 28, 2026
actions/setup-python removed the pip-install input in v7.0.0 (it
installed into the global environment, conflicted with virtualenvs
and tools like uv, and wasn't picked up by Dependabot). Since this
workflow was already pinned to v7.0.0, its pip-install: '-r
docs/requirements.txt' input silently became a no-op, meaning docs
dependencies were never actually installed here.

Replace it with an explicit "pip install -r docs/requirements.txt"
step, matching the fix already proposed in openshift#9133.
@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 29, 2026
@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

PR needs rebase.

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.

@mgencur

mgencur commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Fix included in #9135 , Thanks @dhgautam99 !

/close

@openshift-ci openshift-ci Bot closed this Jul 29, 2026
@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@mgencur: Closed this PR.

Details

In response to this:

Fix included in #9135 , Thanks @dhgautam99 !

/close

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.

@openshift-ci-robot

Copy link
Copy Markdown

@dhgautam99: This pull request references Jira Issue OCPBUGS-99941. The bug has been updated to no longer refer to the pull request using the external bug tracker. All external bug links have been closed. The bug has been moved to the NEW state.

Details

In response to this:

What this PR does / why we need it:

The pip-install input is no longer a valid input for actions/setup-python, causing the "Build Docs" CI job to fail with mkdocs: command not found on all PRs. This replaces the invalid input with an explicit pip install -r docs/requirements.txt step.

Which issue(s) this PR fixes:

Fixes OCPBUGS-99941

Special notes for your reviewer:

This is a repo-wide CI fix — the "Build Docs" job is currently broken for new PRs (e.g., #9132 and #8878). The pip-install input was introduced in PR #8386 and worked initially, but actions/setup-python has since removed it as a valid input.

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Chores
  • Improved the documentation build workflow by adding an explicit documentation dependency installation step.
  • Documentation builds now install requirements from the designated docs/requirements.txt file consistently.

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.

vsolanki12 pushed a commit to vsolanki12/hypershift that referenced this pull request Aug 25, 2026
actions/setup-python removed the pip-install input in v7.0.0 (it
installed into the global environment, conflicted with virtualenvs
and tools like uv, and wasn't picked up by Dependabot). Since this
workflow was already pinned to v7.0.0, its pip-install: '-r
docs/requirements.txt' input silently became a no-op, meaning docs
dependencies were never actually installed here.

Replace it with an explicit "pip install -r docs/requirements.txt"
step, matching the fix already proposed in openshift#9133.
rutvik23 pushed a commit to rutvik23/hypershift that referenced this pull request Aug 26, 2026
actions/setup-python removed the pip-install input in v7.0.0 (it
installed into the global environment, conflicted with virtualenvs
and tools like uv, and wasn't picked up by Dependabot). Since this
workflow was already pinned to v7.0.0, its pip-install: '-r
docs/requirements.txt' input silently became a no-op, meaning docs
dependencies were never actually installed here.

Replace it with an explicit "pip install -r docs/requirements.txt"
step, matching the fix already proposed in openshift#9133.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/api Indicates the PR includes changes for the API area/cli Indicates the PR includes changes for CLI area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform jira/severity-moderate Referenced Jira bug's severity is moderate for the branch this PR is targeting. 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. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants