Automatically update outdated Konflux Tekton tasks based on enterprise contract verification logs or by detecting updates directly.
[Extended thinking: This command can either parse enterprise contract logs or use the update_trusted_task_bundles.py script to identify outdated Tekton tasks, uses skopeo to map digests to version tags, checks migration notes for breaking changes, and updates all pipeline YAML files in the .tekton/ directory with the latest versions.]
Konflux Tekton Tasks Update
Usage Examples:
Update tasks from enterprise contract log:
/update-konflux-tasks ../../hypershift-operator-enterprise-contract-lxgvw-verify.log
Detect and update tasks automatically (no log file):
/update-konflux-tasks
Implementation Details:
- When a log file is provided: Parses Konflux enterprise contract verification logs for outdated task warnings
- When no log file is provided: Uses
hack/tools/scripts/update_trusted_task_bundles.py --dry-run --json to detect updates
- Uses
skopeo inspect to map SHA256 digests to proper version tags
- Checks migration documentation for version bumps
- Requires
skopeo and jq to be installed
Process Flow:
Detect Outdated Tasks:
- If a log file is provided ({{args.0}}):
- Read the provided log file
- Extract all outdated Tekton task warnings that mention "newer version exists"
- Parse out task names, current digests, and latest digests
- If no log file is provided:
- Run
hack/tools/scripts/update_trusted_task_bundles.py $(find .tekton -name '*.yaml') --dry-run --json --upgrade-versions
- Parse the JSON output to identify tasks needing updates
- The JSON output contains updates and available_upgrades per file with task_name, current_version, current_digest, latest_version, latest_digest, and is_version_bump fields
Map Latest Digests to Version Tags:
- For each outdated task, use the helper script
hack/tools/scripts/find_task_version_by_digest.sh <task-name> <digest> to determine the proper version tag for the latest digest
- The helper script uses
skopeo list-tags and skopeo inspect to find which semantic version tag (e.g., 0.2, 0.3) matches the given digest
- It filters out commit-hash style tags (e.g., "0.2-f788d9b...") and only returns clean semantic versions
- Create a mapping of: task-name → current-version@digest → latest-version@digest
Check for Migration Notes:
- For any tasks with version bumps (not just digest updates), check for migration notes
- If a task matches quay.io/redhat-appstudio-tekton-catalog/ rather than quay.io/konflux-ci/tekton-catalog, we should check if it is available in quay.io/konflux-ci/tekton-catalog and change to use the latter.
- Use URL pattern:
https://github.com/konflux-ci/build-definitions/blob/main/task/{task-name}/{version}/MIGRATION.md
- If the migration notes reference a migration script, check their availability with the pattern:
https://github.com/konflux-ci/build-definitions/blob/main/task/{task-name}/{version}/migrations/{version}.sh. If it is available:
- Run the migration script on the identified pipeline files
- Extract any breaking changes, new parameters, or manual steps required
- Ask the user for input in any manual steps are required
- Report if "No action required" or list specific migration steps
Update Pipeline Files:
- Discover all Tekton pipeline YAML files using the glob
.tekton/**/*.yaml
- Replace old
quay.io/konflux-ci/tekton-catalog/task-{name}:{old-version}@{old-digest} with new versions
- Use MultiEdit for efficiency when updating multiple tasks per file
Provide Comprehensive Summary:
- List all outdated tasks found and their update status
- Show current vs. latest version mappings
- Highlight any version bumps vs. digest-only updates
- Report any migration notes or manual steps required
- List all files updated
- Provide before/after examples for key changes
Expected Output Format:
## 🔄 Konflux Tekton Tasks Update Complete
### Tasks Updated:
- ✅ apply-tags: 0.2@old-digest → 0.2@new-digest (digest update)
- ✅ buildah-remote-oci-ta: 0.4@old-digest → 0.5@new-digest (VERSION BUMP - migration notes checked)
- ✅ init: 0.2@old-digest → 0.2@new-digest (digest update)
[... etc for all tasks]
### Files Updated:
- ✅ .tekton/hypershift-operator-main-push.yaml (8 tasks updated)
- ✅ .tekton/hypershift-operator-main-pull-request.yaml (8 tasks updated)
[... etc for all files]
### Migration Notes:
- buildah-remote-oci-ta v0.4→v0.5: ✅ No action required (bug fix for SBOM generation)
### Summary:
- Total tasks updated: X
- Version bumps: X (with migration notes checked)
- Digest updates: X
- Files updated: X
- Manual steps required: None / [list steps]
Error Handling:
- If log file is provided but doesn't exist, provide clear error message
- If no log file is provided and update_trusted_task_bundles.py fails, provide error details
- If skopeo is not installed, provide installation instructions
- If jq is not installed, provide installation instructions
- If yq is not installed, provide installation instructions
- If PyYAML is not installed (required for update_trusted_task_bundles.py), provide installation instructions:
pip install pyyaml
- If no outdated tasks found, report success with no changes needed
- If migration notes URL returns 404, note that no migration documentation exists
- If migration notes include changes that to parameters, output or manual steps, prompt the user about them
Safety Features:
- ✅ Preserves version tags (e.g., keeps
0.2 in task:0.2@sha256:...)
- ✅ Checks migration notes for breaking changes before major version bumps
- ✅ Provides detailed summary of all changes made
- ✅ Use TodoWrite to track progress through complex multi-file updates
Requirements:
skopeo must be installed (for container image inspection)
jq must be installed (for JSON parsing)
yq must be installed (for YAML parsing and checking multi-platform builds)
pyyaml Python package must be installed when running without a log file (for update_trusted_task_bundles.py)
- Internet connectivity (to check migration notes and inspect container images)
Arguments:
- {{args.0}}: Path to the enterprise contract verification log file that contains outdated task warnings (optional). When not provided, the skill uses
hack/tools/scripts/update_trusted_task_bundles.py --dry-run --json to automatically detect outdated tasks.
The command will provide progress updates and automatically update all relevant Tekton pipeline files with the latest task versions.
1---2name: update-konflux-tasks3description: Automatically update outdated Konflux Tekton tasks based on enterprise contract verification logs.4---56Automatically update outdated Konflux Tekton tasks based on enterprise contract verification logs or by detecting updates directly.78[Extended thinking: This command can either parse enterprise contract logs or use the update_trusted_task_bundles.py script to identify outdated Tekton tasks, uses skopeo to map digests to version tags, checks migration notes for breaking changes, and updates all pipeline YAML files in the .tekton/ directory with the latest versions.]910**Konflux Tekton Tasks Update**1112## Usage Examples:13141. **Update tasks from enterprise contract log**:15 `/update-konflux-tasks ../../hypershift-operator-enterprise-contract-lxgvw-verify.log`16172. **Detect and update tasks automatically (no log file)**:18 `/update-konflux-tasks`1920## Implementation Details:2122- When a log file is provided: Parses Konflux enterprise contract verification logs for outdated task warnings23- When no log file is provided: Uses `hack/tools/scripts/update_trusted_task_bundles.py --dry-run --json` to detect updates24- Uses `skopeo inspect` to map SHA256 digests to proper version tags25- Checks migration documentation for version bumps26- Requires `skopeo` and `jq` to be installed2728## Process Flow:29301. **Detect Outdated Tasks**:31 - If a log file is provided ({{args.0}}):32 - Read the provided log file33 - Extract all outdated Tekton task warnings that mention "newer version exists"34 - Parse out task names, current digests, and latest digests35 - If no log file is provided:36 - Run `hack/tools/scripts/update_trusted_task_bundles.py $(find .tekton -name '*.yaml') --dry-run --json --upgrade-versions`37 - Parse the JSON output to identify tasks needing updates38 - The JSON output contains updates and available_upgrades per file with task_name, current_version, current_digest, latest_version, latest_digest, and is_version_bump fields39402. **Map Latest Digests to Version Tags**:41 - For each outdated task, use the helper script `hack/tools/scripts/find_task_version_by_digest.sh <task-name> <digest>` to determine the proper version tag for the latest digest42 - The helper script uses `skopeo list-tags` and `skopeo inspect` to find which semantic version tag (e.g., 0.2, 0.3) matches the given digest43 - It filters out commit-hash style tags (e.g., "0.2-f788d9b...") and only returns clean semantic versions44 - Create a mapping of: task-name → current-version@digest → latest-version@digest45463. **Check for Migration Notes**:47 - For any tasks with version bumps (not just digest updates), check for migration notes48 - If a task matches quay.io/redhat-appstudio-tekton-catalog/ rather than quay.io/konflux-ci/tekton-catalog, we should check if it is available in quay.io/konflux-ci/tekton-catalog and change to use the latter.49 - Use URL pattern: `https://github.com/konflux-ci/build-definitions/blob/main/task/{task-name}/{version}/MIGRATION.md`50 - If the migration notes reference a migration script, check their availability with the pattern: `https://github.com/konflux-ci/build-definitions/blob/main/task/{task-name}/{version}/migrations/{version}.sh`. If it is available:51 - Run the migration script on the identified pipeline files52 - Extract any breaking changes, new parameters, or manual steps required53 - Ask the user for input in any manual steps are required54 - Report if "No action required" or list specific migration steps55564. **Update Pipeline Files**:57 - Discover all Tekton pipeline YAML files using the glob `.tekton/**/*.yaml`58 - Replace old `quay.io/konflux-ci/tekton-catalog/task-{name}:{old-version}@{old-digest}` with new versions59 - Use MultiEdit for efficiency when updating multiple tasks per file60615. **Provide Comprehensive Summary**:62 - List all outdated tasks found and their update status63 - Show current vs. latest version mappings64 - Highlight any version bumps vs. digest-only updates65 - Report any migration notes or manual steps required66 - List all files updated67 - Provide before/after examples for key changes6869## Expected Output Format:70```markdown71## 🔄 Konflux Tekton Tasks Update Complete7273### Tasks Updated:74- ✅ apply-tags: 0.2@old-digest → 0.2@new-digest (digest update)75- ✅ buildah-remote-oci-ta: 0.4@old-digest → 0.5@new-digest (VERSION BUMP - migration notes checked)76- ✅ init: 0.2@old-digest → 0.2@new-digest (digest update)77[... etc for all tasks]7879### Files Updated:80- ✅ .tekton/hypershift-operator-main-push.yaml (8 tasks updated)81- ✅ .tekton/hypershift-operator-main-pull-request.yaml (8 tasks updated)82[... etc for all files]8384### Migration Notes:85- buildah-remote-oci-ta v0.4→v0.5: ✅ No action required (bug fix for SBOM generation)8687### Summary:88- Total tasks updated: X89- Version bumps: X (with migration notes checked)90- Digest updates: X91- Files updated: X92- Manual steps required: None / [list steps]93```9495## Error Handling:96- If log file is provided but doesn't exist, provide clear error message97- If no log file is provided and update_trusted_task_bundles.py fails, provide error details98- If skopeo is not installed, provide installation instructions99- If jq is not installed, provide installation instructions100- If yq is not installed, provide installation instructions101- If PyYAML is not installed (required for update_trusted_task_bundles.py), provide installation instructions: `pip install pyyaml`102- If no outdated tasks found, report success with no changes needed103- If migration notes URL returns 404, note that no migration documentation exists104- If migration notes include changes that to parameters, output or manual steps, prompt the user about them 105106## Safety Features:107- ✅ Preserves version tags (e.g., keeps `0.2` in `task:0.2@sha256:...`)108- ✅ Checks migration notes for breaking changes before major version bumps109- ✅ Provides detailed summary of all changes made110- ✅ Use TodoWrite to track progress through complex multi-file updates111112## Requirements:113- `skopeo` must be installed (for container image inspection)114- `jq` must be installed (for JSON parsing)115- `yq` must be installed (for YAML parsing and checking multi-platform builds)116- `pyyaml` Python package must be installed when running without a log file (for update_trusted_task_bundles.py)117- Internet connectivity (to check migration notes and inspect container images)118119## Arguments:120- {{args.0}}: Path to the enterprise contract verification log file that contains outdated task warnings (optional). When not provided, the skill uses `hack/tools/scripts/update_trusted_task_bundles.py --dry-run --json` to automatically detect outdated tasks.121122The command will provide progress updates and automatically update all relevant Tekton pipeline files with the latest task versions.