shipwright-io / build

Shipwright - a framework for building container images on Kubernetes
https://shipwright.io
Apache License 2.0
627 stars 107 forks source link

[FEATURE] Conditional step #1577

Open cmoulliard opened 2 months ago

cmoulliard commented 2 months ago

Is there an existing feature request for this?

Is your feature request related to a problem or use-case? Please describe.

As a user, I would like that a step is executed according to a matching condition or not

Such a use case exists typically when we do a buildpacks build as since the release 0.10 of the platform spec it is possible to execute the step "extension" (see step description: https://github.com/buildpacks/spec/blob/main/buildpack.md#phase-4-extension-image-extensions-only) or the step "build".

Using Tekton, such condition can be declared as such:

// https://github.com/redhat-buildpacks/catalog/blob/main/tekton/pipeline/buildpacks/01/buildpacks.yaml#L72-L76

    - name: buildpacks
      when:
        - input: $(tasks.buildpacks-extension-check.results.extensionLabels)
          operator: in
          values: ["empty"]
      taskRef:
        name: buildpacks-phases

 or

    - name: buildpacks-extension
      when:
        - input: $(tasks.buildpacks-extension-check.results.extensionLabels)
          operator: notin
          values: ["empty"]
      taskRef:
        name: buildpacks-extension-phases       

Describe the solution that you would like.

The (cluster)buildstrategy should include a when statement where user can declare the condition to be matched to execute or not the step

Describe alternatives you have considered.

No response

Anything else?

No response

adambkaplan commented 2 months ago

This approach warrants further discussion, and the API update would be significant enough that it should be formally described in a SHIP.