From 6fa0eebe5389854995124b43e7d700f2f1cdfc44 Mon Sep 17 00:00:00 2001 From: ikrispin Date: Wed, 25 Feb 2026 15:14:33 +0200 Subject: [PATCH 1/3] adjust the Troubleshooting skill bundle to also account for CI/CD pipelines (Tekton) --- rh-developer/README.md | 1 + rh-developer/docs/debugging-patterns.md | 101 +++++ rh-developer/skills/debug-pipeline/SKILL.md | 396 ++++++++++++++++++++ 3 files changed, 498 insertions(+) create mode 100644 rh-developer/skills/debug-pipeline/SKILL.md diff --git a/rh-developer/README.md b/rh-developer/README.md index 3e2e7c56..41d6651c 100644 --- a/rh-developer/README.md +++ b/rh-developer/README.md @@ -20,6 +20,7 @@ A Claude Code plugin for building and deploying applications on Red Hat platform | -------------------- | ------------------------------------------------------------------------------------------ | | `/debug-pod` | Diagnose pod failures on OpenShift (CrashLoopBackOff, ImagePullBackOff, OOMKilled, pending pods) | | `/debug-build` | Diagnose OpenShift build failures (S2I builds, Docker/Podman builds, BuildConfig issues) | +| `/debug-pipeline` | Diagnose OpenShift Pipelines (Tekton) CI/CD failures (PipelineRun, TaskRun, step errors, workspaces) | | `/debug-network` | Diagnose OpenShift service connectivity (DNS, endpoints, routes, network policies) | | `/debug-container` | Diagnose local Podman/Docker container issues (startup failures, OOM kills, image pull errors) | | `/debug-rhel` | Diagnose RHEL system issues (systemd failures, SELinux denials, firewall blocking) | diff --git a/rh-developer/docs/debugging-patterns.md b/rh-developer/docs/debugging-patterns.md index 420878b9..f6ffa10a 100644 --- a/rh-developer/docs/debugging-patterns.md +++ b/rh-developer/docs/debugging-patterns.md @@ -10,6 +10,10 @@ sources: url: https://docs.openshift.com/container-platform/latest/support/troubleshooting/troubleshooting-operator-issues.html sections: Pod issues, Build issues date_accessed: 2026-02-16 + - title: OpenShift Pipelines Troubleshooting + url: https://docs.openshift.com/pipelines/latest/about/about-openshift-pipelines.html + sections: Troubleshooting, PipelineRun status, TaskRun status + date_accessed: 2026-02-25 - title: Podman Troubleshooting url: https://github.com/containers/podman/blob/main/troubleshooting.md sections: Common Issues @@ -210,6 +214,61 @@ java.lang.OutOfMemoryError: Java heap space → Add MAVEN_OPTS=-Xmx512m ``` +## Pipeline/Tekton Failure Patterns + +### PipelineRun Failure Decision Tree + +``` +PipelineRun Failed +├─ Check PipelineRun status conditions +│ ├─ "PipelineRunTimeout" → Increase spec.timeouts.pipeline +│ ├─ "CouldntGetPipeline" → Pipeline reference invalid, check name/namespace +│ ├─ "PipelineRunCancelled" → Check if timeout or manual cancellation +│ └─ "Failed" → Check which TaskRun failed (see below) +├─ Check failed TaskRun +│ ├─ Step failure (non-zero exit) +│ │ ├─ git-clone step → Auth/URL issue (check SA secrets) +│ │ ├─ build step → Compilation/dependency error +│ │ ├─ push step → Registry auth (check SA dockerconfigjson secret) +│ │ └─ test step → Test failures +│ ├─ Pod scheduling failure → Resource constraints (FailedScheduling event) +│ ├─ Workspace issue → PVC not bound or permission denied +│ └─ Step image pull failure → ImagePullBackOff on step container +└─ Pipeline stuck (Running too long) + ├─ TaskRun pending → Pod can't be scheduled + ├─ Step running indefinitely → Check logs for hang/deadlock + └─ Custom task waiting → Check custom task controller +``` + +### TaskRun Failure Analysis + +``` +TaskRun Failed +├─ Pod not created → Check ServiceAccount exists, resource quotas +├─ Pod pending → Scheduling issue (see Pod Failure Patterns) +├─ Pod terminated → Check step statuses +│ ├─ Exit 1 → Script/application error (check step logs) +│ ├─ Exit 125-127 → Entrypoint/command issue in step image +│ └─ Exit 137 → OOM killed (increase step resources) +└─ Workspace binding failure + ├─ PVC not found → Create PVC or fix workspace binding + ├─ RWO blocks parallel tasks → Use RWX or separate workspaces + └─ Permission denied → Check fsGroup, runAsUser in pod security context +``` + +### Common Tekton Error Messages + +| Error Message | Fix | +|--------------|-----| +| `task "X" not found` | Verify Task name, kind (Task vs ClusterTask), namespace | +| `could not read Username for...` | Add git-credentials secret (annotated with `tekton.dev/git-0`) to ServiceAccount | +| `unauthorized: access denied` (push) | Add dockerconfigjson secret (annotated with `tekton.dev/docker-0`) to ServiceAccount | +| `persistentvolumeclaim "X" not found` | Create PVC or change workspace binding to emptyDir | +| `exceeded timeout` | Increase timeouts in PipelineRun spec (`spec.timeouts.pipeline` / `spec.timeouts.tasks`) | +| `missing required parameter "X"` | Add parameter value to PipelineRun spec | +| `couldn't find remote ref` | Fix git `revision` parameter (branch/tag name) | +| `unable to open Containerfile/Dockerfile` | Fix `DOCKERFILE` param path relative to workspace root | + ## Network Troubleshooting ### Service Has No Endpoints @@ -317,6 +376,26 @@ Build failures └─ Compare with last successful build ``` +### Pipeline Keeps Failing + +``` +Pipeline failures +├─ Same task always fails? +│ ├─ git-clone → Check ServiceAccount secrets, git URL, revision +│ ├─ build step → Check source code, Containerfile path, build context +│ └─ push step → Check ServiceAccount imagePullSecrets, registry URL +├─ Different tasks fail? +│ ├─ Resource exhaustion → Reduce parallel tasks or increase quotas +│ └─ Workspace contention → Use RWX PVC or separate workspaces +├─ Pipeline hangs? +│ ├─ TaskRun pending → Pod can't be scheduled +│ └─ Step running indefinitely → Check step logs +└─ Pipeline never triggers? + ├─ EventListener pod not running → Check EL deployment/logs + ├─ Webhook misconfigured → Verify webhook URL and secret + └─ TriggerBinding wrong → Check CEL expression param extraction +``` + ## Quick Reference Commands ### OpenShift Debugging @@ -341,6 +420,28 @@ oc get endpoints [service-name] oc logs build/[build-name] ``` +### Pipeline/Tekton Debugging + +```bash +# List PipelineRuns (latest first) +oc get pipelinerun --sort-by='.metadata.creationTimestamp' + +# Get PipelineRun details +oc get pipelinerun [name] -o yaml + +# List TaskRuns for a PipelineRun +oc get taskrun -l tekton.dev/pipelineRun=[pipelinerun-name] + +# Get TaskRun pod logs for a specific step +oc logs [taskrun-name]-pod -c step-[step-name] + +# Get events for pipeline resources +oc get events --field-selector involvedObject.kind=PipelineRun + +# Describe EventListener +oc get eventlistener [name] -o yaml +``` + ### RHEL Debugging ```bash diff --git a/rh-developer/skills/debug-pipeline/SKILL.md b/rh-developer/skills/debug-pipeline/SKILL.md new file mode 100644 index 00000000..cbd304dd --- /dev/null +++ b/rh-developer/skills/debug-pipeline/SKILL.md @@ -0,0 +1,396 @@ +--- +name: debug-pipeline +description: | + Diagnose OpenShift Pipelines (Tekton) CI/CD failures including PipelineRun failures, TaskRun step errors, workspace/PVC binding issues, and authentication problems. Automates multi-step diagnosis: PipelineRun status, failed TaskRun analysis, step container logs, and related resource checks. Use this skill when pipelines fail, hang, or produce unexpected results. Triggers on /debug-pipeline command or phrases like "pipeline failed", "PipelineRun error", "TaskRun failed", "tekton error", "pipeline stuck", "pipeline timeout". +metadata: + user_invocable: "true" +--- + +# /debug-pipeline Skill + +Diagnose OpenShift Pipelines (Tekton) CI/CD failures by automatically gathering PipelineRun status, failed TaskRun details, step container logs, and related resources. + +## Prerequisites + +Before running this skill: +1. User is logged into OpenShift cluster +2. User has access to the target namespace +3. OpenShift Pipelines operator is installed on the cluster +4. PipelineRun name is known (or can be identified from recent runs) + +## Critical: Human-in-the-Loop Requirements + +See [Human-in-the-Loop Requirements](../../docs/human-in-the-loop.md) for mandatory checkpoint behavior. + +**IMPORTANT:** This skill requires explicit user confirmation at each step. You MUST: +1. **Wait for user confirmation** before executing diagnostic actions +2. **Do NOT proceed** to the next step until the user explicitly approves +3. **Present findings clearly** and ask if user wants deeper analysis +4. **Never auto-execute** remediation actions without user approval + +If the user says "no" or wants to focus on specific areas, address their concerns before proceeding. + +## Critical: Prefer MCP Tools + +**IMPORTANT:** Prefer MCP tools over CLI commands for better integration and user experience: +1. **Search for MCP tools first** - Use `ToolSearch` to load OpenShift MCP tools (e.g., `+openshift resources_get`) before diagnostic actions +2. **Use MCP when available** - Prefer `resources_get`, `resources_list`, `pod_logs`, `events_list` over `oc`/`kubectl` commands + +### Tekton CRD Access via MCP + +Tekton resources are standard Kubernetes CRDs. Use the generic MCP tools with these parameters: + +| Resource | kind | apiVersion | +|----------|------|------------| +| PipelineRun | `PipelineRun` | `tekton.dev/v1` | +| TaskRun | `TaskRun` | `tekton.dev/v1` | +| Pipeline | `Pipeline` | `tekton.dev/v1` | +| Task | `Task` | `tekton.dev/v1` | +| ClusterTask | `ClusterTask` | `tekton.dev/v1beta1` | +| EventListener | `EventListener` | `triggers.tekton.dev/v1beta1` | +| TriggerTemplate | `TriggerTemplate` | `triggers.tekton.dev/v1beta1` | +| TriggerBinding | `TriggerBinding` | `triggers.tekton.dev/v1beta1` | + +## Trigger + +- User types `/debug-pipeline` +- User says "pipeline failed", "PipelineRun failed", "PipelineRun error" +- User says "TaskRun failed", "task step failed", "tekton error" +- User says "pipeline stuck", "pipeline timeout", "pipeline hanging" +- User says "CI/CD failed", "CI pipeline broken" +- After a CI/CD pipeline reports a failure + +## Input Parameters + +| Parameter | Description | Default | +|-----------|-------------|---------| +| `PIPELINERUN_NAME` | Name of specific PipelineRun to debug | Latest failed PipelineRun | +| `PIPELINE_NAME` | Pipeline name to find runs for | Auto-detect | +| `NAMESPACE` | Target namespace | Current namespace | + +## Workflow + +### Step 1: Identify Target PipelineRun + +```markdown +## Pipeline Debugging + +**Current OpenShift Context:** +- Cluster: [cluster] +- Namespace: [namespace] + +Which PipelineRun would you like me to debug? + +1. **Specify PipelineRun name** - Enter the PipelineRun name directly +2. **List failed PipelineRuns** - Show recent failed PipelineRuns in current namespace +3. **From Pipeline** - Debug latest run of a specific Pipeline + +Select an option or enter a PipelineRun name: +``` + +**WAIT for user response.** Do NOT proceed until user identifies the target PipelineRun. + +If user selects "List failed PipelineRuns": +Use kubernetes MCP `resources_list` with kind `PipelineRun`, filter by Failed status: + +```markdown +## Recent Failed PipelineRuns in [namespace] + +| PipelineRun | Pipeline | Status | Started | Duration | +|-------------|----------|--------|---------|----------| +| [run-name] | [pipeline] | Failed | [timestamp] | [duration] | + +Which PipelineRun would you like me to debug? +``` + +**WAIT for user to select a PipelineRun.** + +### Step 2: Get PipelineRun Status Overview + +Use kubernetes MCP `resources_get` for the PipelineRun: + +```markdown +## PipelineRun Status: [pipelinerun-name] + +**PipelineRun Info:** +| Field | Value | +|-------|-------| +| Pipeline | [pipeline-name] | +| Status | [Succeeded/Failed/Running/Cancelled] | +| Started | [timestamp] | +| Completed | [timestamp or "Still running"] | +| Duration | [duration] | + +**Parameters:** +| Name | Value | +|------|-------| +| [param-name] | [param-value] | + +**TaskRun Status:** +| Task | TaskRun | Status | Duration | +|------|---------|--------|----------| +| [task-1] | [taskrun-1] | Succeeded | [duration] | +| [task-2] | [taskrun-2] | **Failed** | [duration] | +| [task-3] | [taskrun-3] | Skipped | - | + +**Quick Assessment:** +[Based on status conditions - e.g., "PipelineRun failed because TaskRun 'build' failed at step 'build-push'"] + +Continue with failed TaskRun analysis? (yes/no) +``` + +**WAIT for user confirmation before proceeding.** + +### Step 3: Analyze Failed TaskRun(s) + +Use kubernetes MCP `resources_get` for each failed TaskRun: + +```markdown +## Failed TaskRun: [taskrun-name] + +**TaskRun Info:** +| Field | Value | +|-------|-------| +| Task | [task-name] | +| Pod | [taskrun-name]-pod | +| Status | [Failed] | +| Reason | [reason from conditions] | + +**Step Status:** +| Step | Container | Status | Exit Code | Reason | +|------|-----------|--------|-----------|--------| +| [step-1] | step-[step-1] | Completed | 0 | - | +| [step-2] | step-[step-2] | **Terminated** | [code] | [reason] | +| [step-3] | step-[step-3] | - | - | Skipped | + +**Workspace Bindings:** +| Workspace | Type | Resource | Status | +|-----------|------|----------|--------| +| [shared-workspace] | PVC | [pvc-name] | [Bound/Pending] | +| [output] | EmptyDir | - | OK | + +**Issues Found:** +- [Issue 1 - e.g., "Step 'build-push' failed with exit code 1"] + +Continue to view step logs? (yes/no) +``` + +**Note:** Tekton names step containers as `step-` in the TaskRun pod. Use this convention with `pod_logs`. + +**WAIT for user confirmation before proceeding.** + +### Step 4: Get TaskRun Pod Logs + +Use kubernetes MCP `pod_logs` for the TaskRun pod, targeting the failed step container (`step-`): + +```markdown +## Step Logs: [step-name] (Pod: [taskrun-name]-pod) + +**Failed Step Container:** `step-[step-name]` + +``` +[log output from the failed step container] +``` + +**Log Analysis:** + +**Errors Found:** +- Line [X]: [error description] + +Continue to check related resources? (yes/no) +``` + +**WAIT for user confirmation before proceeding.** + +### Step 5: Check Related Resources + +Check resources that could cause pipeline failures: + +```markdown +## Related Resources Analysis + +**ServiceAccount:** +| Field | Value | Status | +|-------|-------|--------| +| Name | [sa-name] | [OK] | +| Image Pull Secrets | [secrets] | [OK/MISSING] | +| Linked Secrets | [secrets] | [OK/MISSING] | + +**Workspaces/PVCs:** +| PVC | Status | Access Mode | Storage | +|-----|--------|-------------|---------| +| [pvc-name] | [Bound/Pending] | [RWO/RWX] | [size] | + +**Secrets:** +| Secret | Type | Referenced By | Status | +|--------|------|---------------|--------| +| [git-creds] | kubernetes.io/basic-auth | git-clone task | [OK/MISSING] | +| [registry-creds] | kubernetes.io/dockerconfigjson | push task | [OK/MISSING] | + +**Pipeline/Task Definitions:** +| Resource | Exists | Issues | +|----------|--------|--------| +| Pipeline [name] | [Yes/No] | [none / param mismatch] | +| Task [name] | [Yes/No] | [none / not found] | + +[If triggered by EventListener:] +**EventListener:** +| Field | Value | Status | +|-------|-------|--------| +| Name | [el-name] | [Running/NotRunning] | +| TriggerTemplate | [tt-name] | [OK/MISSING] | +| TriggerBinding | [tb-name] | [OK/MISSING] | + +**Issues Found:** +- [Issue 1] + +Continue to full diagnosis summary? (yes/no) +``` + +**WAIT for user confirmation before proceeding.** + +### Step 6: Present Diagnosis Summary + +```markdown +## Diagnosis Summary: [pipelinerun-name] + +### Root Cause + +**Primary Issue:** [Categorized root cause] + +| Category | Status | Details | +|----------|--------|---------| +| Pipeline Definition | [OK/FAIL] | [details] | +| TaskRun Execution | [OK/FAIL] | [details] | +| Step Container | [OK/FAIL] | [details] | +| Workspace/PVC | [OK/FAIL] | [details] | +| Authentication | [OK/FAIL] | [details] | +| Resources/Quota | [OK/FAIL] | [details] | + +### Detailed Findings + +**[Category: e.g., Authentication]** +- Problem: [specific problem] +- Evidence: [from logs/events] +- Impact: [effect on pipeline] + +### Recommended Actions + +1. **[Action 1]** - [description] + ```bash + [command to fix] + ``` + +2. **[Action 2]** - [description] + ```bash + [command to fix] + ``` + +### Retry PipelineRun + +After fixing the issue: +```bash +# Rerun using the same PipelineRun spec +oc create -f <(oc get pipelinerun [name] -o json | jq 'del(.metadata.resourceVersion, .metadata.uid, .metadata.creationTimestamp, .status) | .metadata.name = .metadata.name + "-retry"') -n [namespace] + +# Or using tkn CLI (if available) +tkn pipeline start [pipeline-name] --use-pipelinerun [pipelinerun-name] -n [namespace] +``` + +--- + +Would you like me to: +1. Execute one of the recommended fixes +2. Retry the PipelineRun +3. Debug the TaskRun pod directly (/debug-pod) +4. View Pipeline or Task definition +5. Exit debugging + +Select an option: +``` + +**WAIT for user to select next action.** + +## Pipeline Failure Reference + +### Failure Categories + +| Category | Failure Type | Key Indicators | Common Fix | +|----------|--------------|----------------|------------| +| **Authentication** | git-clone auth | `could not read Username`, `Permission denied (publickey)` | Add git secret to ServiceAccount | +| **Authentication** | Image push | `unauthorized: access denied` | Add dockerconfigjson secret to ServiceAccount | +| **Workspace** | PVC not bound | `persistentvolumeclaim "X" not found` | Create PVC or use emptyDir | +| **Workspace** | Permission denied | `permission denied` in step logs | Check fsGroup, runAsUser, PVC access mode | +| **Workspace** | Contention | Parallel tasks fail on RWO PVC | Use RWX PVC or separate workspaces | +| **Timeout** | PipelineRun timeout | `PipelineRunTimeout` condition | Increase `spec.timeouts.pipeline` | +| **Timeout** | TaskRun timeout | `TaskRunTimeout` condition | Increase `spec.timeouts.tasks` | +| **Parameter** | Missing param | `missing required parameter` | Add param to PipelineRun spec | +| **Task Step** | Build/test failure | Non-zero exit in step | Check step logs for specific error | +| **Resource** | Pod scheduling | `FailedScheduling` event | Increase quotas or reduce step resource requests | +| **Image** | Step image pull | `ImagePullBackOff` on step container | Fix step image reference or add pull secret | +| **Pipeline** | Task not found | `task "X" not found` | Verify Task name, kind (Task vs ClusterTask), namespace | +| **Trigger** | EventListener down | No PipelineRuns created | Check EventListener pod logs | +| **Trigger** | Binding mismatch | Wrong params extracted | Fix TriggerBinding param paths in CEL expressions | + +### git-clone Task Failures + +| Issue | Symptom | Solution | +|-------|---------|----------| +| Private repo, no credentials | `could not read Username` | Add `kubernetes.io/basic-auth` secret annotated with `tekton.dev/git-0: https://github.com` to SA | +| SSH key missing | `Permission denied (publickey)` | Add `kubernetes.io/ssh-auth` secret annotated with `tekton.dev/git-0: github.com` to SA | +| Branch not found | `couldn't find remote ref` | Verify `revision` parameter | + +### buildah/kaniko Task Failures + +| Issue | Symptom | Solution | +|-------|---------|----------| +| Containerfile not found | `unable to open Containerfile/Dockerfile` | Check `DOCKERFILE` parameter path relative to workspace | +| Base image pull | `unauthorized` or `not found` for FROM image | Fix base image ref or add pull secret | +| Build context wrong | `file not found` during COPY/ADD | Fix `CONTEXT` parameter to correct subdirectory | + +### Image Push Failures + +| Issue | Symptom | Solution | +|-------|---------|----------| +| Registry auth | `unauthorized: access denied` | Add `kubernetes.io/dockerconfigjson` secret annotated with `tekton.dev/docker-0: ` to SA | +| Registry unreachable | `connection refused` / `no such host` | Check registry URL, network policies, egress rules | + +## MCP Tools Used + +| Tool | Purpose | +|------|---------| +| `resources_list` | List PipelineRuns, TaskRuns, PVCs, Secrets, Pipelines, Tasks | +| `resources_get` | Get PipelineRun details, TaskRun details, Pipeline/Task definitions, ServiceAccount, EventListener | +| `pod_logs` | Get TaskRun pod logs for failed step containers (use container name `step-`) | +| `pod_list` | Find TaskRun pods | +| `events_list` | Get PipelineRun/TaskRun pod events for scheduling and binding errors | + +## Output Variables + +| Variable | Description | Example | +|----------|-------------|---------| +| `PIPELINERUN_NAME` | Debugged PipelineRun name | `build-and-deploy-run-abc123` | +| `PIPELINE_NAME` | Associated Pipeline | `build-and-deploy` | +| `PIPELINE_NAMESPACE` | Namespace | `my-project` | +| `FAILED_TASKRUN` | Name of the failed TaskRun | `build-and-deploy-run-abc123-build-task` | +| `FAILED_STEP` | Step that failed | `build-push` | +| `FAILURE_CATEGORY` | Categorized failure type | `Authentication` | +| `ROOT_CAUSE` | Identified root cause | `git-clone unauthorized - missing git secret on ServiceAccount` | + +## Dependencies + +### Required MCP Servers +- `openshift` (kubernetes MCP server) +- `github` (optional, for source repository verification) + +### Related Skills +- `/debug-pod` - To debug TaskRun pods directly +- `/debug-build` - If the pipeline uses OpenShift Build tasks +- `/debug-network` - If pipeline tasks fail due to network issues +- `/validate-environment` - To verify OpenShift and pipeline operator setup + +## Reference Documentation + +For detailed guidance, see: +- [docs/debugging-patterns.md](../../docs/debugging-patterns.md) - Common error patterns and pipeline troubleshooting trees +- [docs/prerequisites.md](../../docs/prerequisites.md) - Required tools (oc), cluster access verification From 490264fdb284bb468e3915666a0247311a79ff34 Mon Sep 17 00:00:00 2001 From: Daniele Martinoli <86618610+dmartinol@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:45:00 +0100 Subject: [PATCH 2/3] Update rh-developer/docs/debugging-patterns.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- rh-developer/docs/debugging-patterns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rh-developer/docs/debugging-patterns.md b/rh-developer/docs/debugging-patterns.md index f6ffa10a..2863d559 100644 --- a/rh-developer/docs/debugging-patterns.md +++ b/rh-developer/docs/debugging-patterns.md @@ -423,7 +423,7 @@ oc logs build/[build-name] ### Pipeline/Tekton Debugging ```bash -# List PipelineRuns (latest first) +# List PipelineRuns (oldest first) oc get pipelinerun --sort-by='.metadata.creationTimestamp' # Get PipelineRun details From 51382dd8069af57b04ce90050abf9bde9417a80b Mon Sep 17 00:00:00 2001 From: Daniele Martinoli <86618610+dmartinol@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:45:51 +0100 Subject: [PATCH 3/3] Update rh-developer/skills/debug-pipeline/SKILL.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- rh-developer/skills/debug-pipeline/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rh-developer/skills/debug-pipeline/SKILL.md b/rh-developer/skills/debug-pipeline/SKILL.md index cbd304dd..8c8f3f6e 100644 --- a/rh-developer/skills/debug-pipeline/SKILL.md +++ b/rh-developer/skills/debug-pipeline/SKILL.md @@ -291,7 +291,7 @@ Continue to full diagnosis summary? (yes/no) After fixing the issue: ```bash # Rerun using the same PipelineRun spec -oc create -f <(oc get pipelinerun [name] -o json | jq 'del(.metadata.resourceVersion, .metadata.uid, .metadata.creationTimestamp, .status) | .metadata.name = .metadata.name + "-retry"') -n [namespace] +oc create -f <(oc get pipelinerun [name] -n [namespace] -o json | jq 'del(.metadata.resourceVersion, .metadata.uid, .metadata.creationTimestamp, .status) | .metadata.name = .metadata.name + "-retry"') -n [namespace] # Or using tkn CLI (if available) tkn pipeline start [pipeline-name] --use-pipelinerun [pipelinerun-name] -n [namespace]