Skip to content

Conversation

@ayushsatyam146
Copy link
Member

@ayushsatyam146 ayushsatyam146 commented Nov 24, 2025

Changes

  • Created executor_generator.go defining 5-phase build execution interface with
    initialization step
  • Implemented TaskRunGenerator for single-pod, sequential step execution
  • Implemented PipelineRunGenerator for multi-pod, multi-task execution with
    PVC-based data sharing
  • Shipwright-managed push strategies are now supported in PipelineRun mode via
    a separate output-image task, enabling 3-task execution (source-acquisition,
    build-strategy, output-image) when using shp-output-directory. Strategy-managed
    push continues to use 2 tasks.

Summary

Introduced a common BuildRunExecutorGenerator interface that both TaskRun and
PipelineRun implementations follow, while maintaining clear separation between
execution models.

Architecture overview:

  TaskRun:       1 Pod → [git-clone, buildah-build, image-processing]
  PipelineRun:   2-3 Pods → Task1[git-clone] → Task2[buildah-build] → Task3[image-processing]*
                 (*Task3 only created for shipwright-managed push strategies)

The unified approach enables easy addition of new executor types (e.g., for
multi-arch builds) while maintaining a single source of truth for business logic.

Release Notes

Added PipelineRun execution mode as an alternative to TaskRun for multi-pod build execution with PVC-based workspace storage, laying the foundation for future multi-architecture build support.

@openshift-ci openshift-ci bot added the release-note Label for when a PR has specified a release note label Nov 24, 2025
@pull-request-size pull-request-size bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Nov 24, 2025
@ayushsatyam146 ayushsatyam146 marked this pull request as draft November 24, 2025 11:39
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 24, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign apoorvajagtap 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

@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Nov 24, 2025
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch 4 times, most recently from 1ca78ca to e837e32 Compare December 1, 2025 08:49
@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 1, 2025
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from e837e32 to 1b53dab Compare December 1, 2025 11:43
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 1, 2025
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from 1b53dab to c1fac02 Compare December 2, 2025 05:16
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from a2eea40 to d162766 Compare December 8, 2025 06:24
@ayushsatyam146 ayushsatyam146 marked this pull request as ready for review December 8, 2025 06:28
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 8, 2025
@openshift-ci openshift-ci bot requested review from adambkaplan and rxinui December 8, 2025 06:28
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch 2 times, most recently from 69527a0 to b6db4c5 Compare December 8, 2025 06:54
@openshift-ci openshift-ci bot added do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. and removed release-note Label for when a PR has specified a release note labels Dec 8, 2025
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from 7794b28 to c90dbed Compare December 8, 2025 07:18
@ayushsatyam146 ayushsatyam146 marked this pull request as draft December 8, 2025 08:12
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 8, 2025
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from c90dbed to c853cb2 Compare December 8, 2025 08:14
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch 2 times, most recently from ecae202 to 179c370 Compare December 8, 2025 12:07
@ayushsatyam146 ayushsatyam146 marked this pull request as ready for review December 8, 2025 12:34
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 8, 2025
@openshift-ci openshift-ci bot requested a review from apoorvajagtap December 8, 2025 12:34
@ayushsatyam146
Copy link
Member Author

/retest Release Note Linter

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 8, 2025

@ayushsatyam146: No presubmit jobs available for shipwright-io/build@main

Details

In response to this:

/retest Release Note Linter

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.

@ayushsatyam146
Copy link
Member Author

/retest

@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from 179c370 to 508aebe Compare December 8, 2025 12:46
@openshift-ci openshift-ci bot added release-note Label for when a PR has specified a release note and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Dec 8, 2025
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch 2 times, most recently from a001dfb to fdcf4b7 Compare December 9, 2025 12:39
@ayushsatyam146
Copy link
Member Author

/retest Unit, Integration, and E2E Tests / e2e (v1.34.0, v1.6.0)

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 11, 2025

@ayushsatyam146: No presubmit jobs available for shipwright-io/build@main

Details

In response to this:

/retest Unit, Integration, and E2E Tests / e2e (v1.34.0, v1.6.0)

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.

@ayushsatyam146
Copy link
Member Author

/retest

…late Method pattern

# Summary
Introduced a common BuildRunExecutorGenerator interface that both TaskRun and
PipelineRun implementations follow, while maintaining clear separation between
execution models.

# Changes
- Created executor_generator.go defining 5-phase build execution interface with
  initialization step
- Implemented TaskRunGenerator for single-pod, sequential step execution
- Implemented PipelineRunGenerator for multi-pod, multi-task execution with
  PVC-based data sharing
- Shipwright-managed push strategies are now supported in PipelineRun mode via
  a separate output-image task, enabling 3-task execution (source-acquisition,
  build-strategy, output-image) when using shp-output-directory. Strategy-managed
  push continues to use 2 tasks.

# Architecture overview:
  TaskRun:       1 Pod → [git-clone, buildah-build, image-processing]
  PipelineRun:   2-3 Pods → Task1[git-clone] → Task2[buildah-build] → Task3[image-processing]*
                 (*Task3 only created for shipwright-managed push strategies)

The unified approach enables easy addition of new executor types (e.g., for
multi-arch builds) while maintaining a single source of truth for business logic.

[Release Notes]
- Added PipelineRun execution mode as an alternative to TaskRun, enabling
  multi-pod build execution with persistent workspace storage. This lays
  the foundation for future multi-architecture build support.
- Build executions now support two modes:
  - TaskRun mode (default): Single pod with sequential steps, EmptyDir storage
  - PipelineRun mode: Multiple pods (2-3 depending on push strategy) with
    task-level separation and PVC-based data sharing
- Note: PipelineRun mode uses PersistentVolumeClaim (1Gi) for workspace
  storage instead of EmptyDir, which may require StorageClass configuration
  in your cluster.

Signed-off-by: ayushsatyam146 <[email protected]>
@ayushsatyam146 ayushsatyam146 force-pushed the split-pipeline-implementation branch from fdcf4b7 to 2eabc49 Compare December 11, 2025 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-note Label for when a PR has specified a release note size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants