Skip to content

Introduce pipelines to build uat instances#423

Merged
ralphbean merged 1 commit intouat-instancefrom
uat-pipelines
Feb 13, 2026
Merged

Introduce pipelines to build uat instances#423
ralphbean merged 1 commit intouat-instancefrom
uat-pipelines

Conversation

@ralphbean
Copy link
Member

No description provided.

@ralphbean ralphbean requested a review from Zyzyx as a code owner February 13, 2026 13:39
@qodo-code-review
Copy link

Review Summary by Qodo

Add Tekton pipelines for UAT instance builds

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Add Tekton pipeline configurations for UAT instance builds
• Support pull request and push events on uat-instance branch
• Configure separate pipelines for sync2jira and sync-page-uat components
• Set up container image building with expiration and versioning
Diagram
flowchart LR
  A["uat-instance branch"] -->|"pull_request event"| B["sync2jira-uat-pull-request"]
  A -->|"push event"| C["sync2jira-uat-push"]
  A -->|"pull_request event"| D["sync2jira-sync-page-uat-pull-request"]
  A -->|"push event"| E["sync2jira-sync-page-uat-push"]
  B --> F["build-pipeline"]
  C --> F
  D --> F
  E --> F
  F --> G["Container images on Quay.io"]
Loading

Grey Divider

File Changes

1. .tekton/sync2jira-uat-pull-request.yaml ⚙️ Configuration changes +39/-0

Tekton pipeline for sync2jira UAT pull requests

• Create Tekton PipelineRun for sync2jira UAT pull request builds
• Trigger on pull_request events targeting uat-instance branch
• Build container image with 5-day expiration and PR-based versioning
• Configure git authentication and build-pipeline reference

.tekton/sync2jira-uat-pull-request.yaml


2. .tekton/sync2jira-uat-push.yaml ⚙️ Configuration changes +36/-0

Tekton pipeline for sync2jira UAT push events

• Create Tekton PipelineRun for sync2jira UAT push builds
• Trigger on push events to uat-instance branch
• Build container image with revision-based versioning
• Configure git authentication and build-pipeline reference

.tekton/sync2jira-uat-push.yaml


3. .tekton/sync2jira-sync-page-uat-pull-request.yaml ⚙️ Configuration changes +39/-0

Tekton pipeline for sync-page-uat pull requests

• Create Tekton PipelineRun for sync-page-uat pull request builds
• Trigger on pull_request events targeting uat-instance branch
• Build container image with 5-day expiration and PR-based versioning
• Use Dockerfile.sync-page-uat for component-specific builds

.tekton/sync2jira-sync-page-uat-pull-request.yaml


View more (1)
4. .tekton/sync2jira-sync-page-uat-push.yaml ⚙️ Configuration changes +36/-0

Tekton pipeline for sync-page-uat push events

• Create Tekton PipelineRun for sync-page-uat push builds
• Trigger on push events to uat-instance branch
• Build container image with revision-based versioning
• Use Dockerfile.sync-page-uat for component-specific builds

.tekton/sync2jira-sync-page-uat-push.yaml


Grey Divider

Qodo Logo

@ralphbean
Copy link
Member Author

/retest

@qodo-code-review
Copy link

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Missing sync-page-uat Dockerfile 🐞 Bug ✓ Correctness
Description
The new UAT sync-page PipelineRuns reference Dockerfile.sync-page-uat, but the repository only
contains Dockerfile.sync-page. The build-pipeline passes this param to the build task as the
Dockerfile path, so UAT sync-page builds will fail at runtime when the file can’t be found.
Code

.tekton/sync2jira-sync-page-uat-pull-request.yaml[R29-30]

+  - name: dockerfile
+    value: Dockerfile.sync-page-uat
Evidence
Both new UAT sync-page PipelineRuns set params.dockerfile to Dockerfile.sync-page-uat. The
shared build-pipeline consumes params.dockerfile and forwards it to the build task as
DOCKERFILE. Existing (non-UAT) sync-page pipelines use Dockerfile.sync-page, which exists in the
repo, but there is no corresponding Dockerfile.sync-page-uat present.

.tekton/sync2jira-sync-page-uat-pull-request.yaml[25-30]
.tekton/sync2jira-sync-page-uat-push.yaml[24-27]
.tekton/build-pipeline.yaml[40-43]
.tekton/build-pipeline.yaml[175-181]
.tekton/sync2jira-sync-page-pull-request.yaml[25-30]
Dockerfile.sync-page[1-5]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The UAT sync-page Tekton PipelineRuns pass `Dockerfile.sync-page-uat` into the shared `build-pipeline`, but there is no such Dockerfile in the repository. This will cause the build task to fail when it tries to use the specified Dockerfile.

### Issue Context
The `build-pipeline` uses `$(params.dockerfile)` as the Dockerfile path for the build task.

### Fix Focus Areas
- .tekton/sync2jira-sync-page-uat-pull-request.yaml[25-31]
- .tekton/sync2jira-sync-page-uat-push.yaml[24-29]

### Suggested fix
Choose one:
1) Add `Dockerfile.sync-page-uat` (likely based on `Dockerfile.sync-page`, adjusting labels/CMD/build args as needed for UAT).
2) If UAT does not require a separate Dockerfile, change both UAT sync-page PipelineRuns to `Dockerfile.sync-page`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. UAT push retention unclear 🐞 Bug ⛯ Reliability
Description
The UAT push PipelineRuns build images tagged by commit SHA (:{{revision}}) but do not set
image-expires-after. If UAT images are meant to be ephemeral, this can accumulate many tags and
OCI artifacts over time; confirm intended retention and set an expiry if appropriate.
Code

.tekton/sync2jira-uat-push.yaml[R19-27]

+  params:
+  - name: git-url
+    value: '{{source_url}}'
+  - name: revision
+    value: '{{revision}}'
+  - name: output-image
+    value: quay.io/redhat-user-workloads/sync2jira-tenant/sync2jira-uat:{{revision}}
+  - name: dockerfile
+    value: Dockerfile
Evidence
Both UAT push PipelineRuns omit the image-expires-after param, while the same parameter is
explicitly used for UAT PR builds. The shared build-pipeline supports image-expires-after and
forwards it to tasks that store OCI artifacts/images, so adding it would enable automated cleanup
for non-long-lived tags.

.tekton/sync2jira-uat-push.yaml[19-27]
.tekton/sync2jira-sync-page-uat-push.yaml[19-27]
.tekton/sync2jira-uat-pull-request.yaml[25-28]
.tekton/build-pipeline.yaml[60-63]
.tekton/build-pipeline.yaml[186-188]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
UAT push builds create uniquely tagged images (`:{{revision}}`) but omit `image-expires-after`. If the `uat-instance` branch is meant for ephemeral UAT deployments, this may lead to unbounded growth in image tags/OCI artifacts.

### Issue Context
The shared `build-pipeline` supports `image-expires-after` and passes it into tasks that create OCI artifacts/images.

### Fix Focus Areas
- .tekton/sync2jira-uat-push.yaml[19-28]
- .tekton/sync2jira-sync-page-uat-push.yaml[19-29]

### Suggested fix
- Confirm desired retention for UAT push artifacts.
- If ephemeral, add:
 - name: image-expires-after
   value: <desired duration>
 to both UAT push PipelineRuns.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

Comment on lines 29 to 30
- name: dockerfile
value: Dockerfile.sync-page-uat

Choose a reason for hiding this comment

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

Action required

1. Missing sync-page-uat dockerfile 🐞 Bug ✓ Correctness

The new UAT sync-page PipelineRuns reference Dockerfile.sync-page-uat, but the repository only
contains Dockerfile.sync-page. The build-pipeline passes this param to the build task as the
Dockerfile path, so UAT sync-page builds will fail at runtime when the file can’t be found.
Agent Prompt
### Issue description
The UAT sync-page Tekton PipelineRuns pass `Dockerfile.sync-page-uat` into the shared `build-pipeline`, but there is no such Dockerfile in the repository. This will cause the build task to fail when it tries to use the specified Dockerfile.

### Issue Context
The `build-pipeline` uses `$(params.dockerfile)` as the Dockerfile path for the build task.

### Fix Focus Areas
- .tekton/sync2jira-sync-page-uat-pull-request.yaml[25-31]
- .tekton/sync2jira-sync-page-uat-push.yaml[24-29]

### Suggested fix
Choose one:
1) Add `Dockerfile.sync-page-uat` (likely based on `Dockerfile.sync-page`, adjusting labels/CMD/build args as needed for UAT).
2) If UAT does not require a separate Dockerfile, change both UAT sync-page PipelineRuns to `Dockerfile.sync-page`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@ralphbean
Copy link
Member Author

/retest

@ralphbean
Copy link
Member Author

/retest

2 similar comments
@ralphbean
Copy link
Member Author

/retest

@ralphbean
Copy link
Member Author

/retest

@ralphbean ralphbean merged commit e09b943 into uat-instance Feb 13, 2026
6 checks passed
@ralphbean ralphbean deleted the uat-pipelines branch February 13, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant