Add --resolvertype flag to rerun a resolver based pipelinerun#2615
Add --resolvertype flag to rerun a resolver based pipelinerun#2615tekton-robot merged 1 commit intotektoncd:mainfrom
Conversation
32a46eb to
da400b4
Compare
|
/assign @chmouel @divyansh42 |
pkg/cmd/pipeline/start.go
Outdated
| return opt.runWithResolverOnly(cs, pipelineName) | ||
| } | ||
|
|
||
| func (opt *startOptions) runWithResolverOnly(_ *cli.Clients, pipelineName string) error { |
There was a problem hiding this comment.
all those methods have a lot of duplications.. any way to streamline this ? by extracting it to a helper method like createObjectMeta(lastPipelineRun, prefixName)
There was a problem hiding this comment.
sure, I update it by extracting those in a helper function
|
/retest |
|
/assign |
pkg/cmd/pipeline/start.go
Outdated
|
|
||
| // Validate resolvertype values | ||
| if opt.ResolverType != "" { | ||
| validResolvers := []string{"hub", "git", "http", "cluster", "bundles", "remote"} |
There was a problem hiding this comment.
change to "bundle" resolver and not bundles
docs/cmd/tkn_pipeline_start.md
Outdated
| --pipeline-timeout string timeout for PipelineRun | ||
| --pod-template string local or remote file containing a PodTemplate definition | ||
| --prefix-name string specify a prefix for the PipelineRun name (must be lowercase alphanumeric characters) | ||
| --resolvertype string resolver type for remote pipelines (hub, git, http, cluster, bundles, remote) |
There was a problem hiding this comment.
if I am not wrong this is "bundle" resolver and not bundles
There was a problem hiding this comment.
I checked the documents and saw pipelineRef.resolver is bundles , should we change it bundle?
docs/man/man1/tkn-pipeline-start.1
Outdated
|
|
||
| .PP | ||
| \fB\-\-resolvertype\fP="" | ||
| resolver type for remote pipelines (hub, git, http, cluster, bundles, remote) |
pkg/cmd/pipeline/start.go
Outdated
| return opt.runWithResolverOnly(cs, pipelineName) | ||
| } | ||
|
|
||
| func (opt *startOptions) runWithResolverOnly(_ *cli.Clients, pipelineName string) error { |
|
|
||
| Re-run the last PipelineRun that used git resolver | ||
|
|
||
| tkn pipeline start --last --resolvertype=git -n bar |
There was a problem hiding this comment.
here, pipeline name is optional
pkg/cmd/pipeline/start_test.go
Outdated
| test.AssertOutput(t, expected, got) | ||
| } | ||
|
|
||
| func TestPipelineStart_WithResolver(t *testing.T) { |
There was a problem hiding this comment.
This is testing specifically with git resolver so should be named WithGitResolver
|
/retest |
- Add --resolvertype flag supporting hub, git, http, cluster, bundle and remote resolver type - Implement special remote resolver that finds latest PipelineRun with any resolver type and rerun it - If --resolvertype flag value is except remote, filters pipelinerun by that resolver type - Integrate --resolvertype with existing --last flag functionality - With --resolvertype and --last flags pipeline name is optional - With --last flag pipeline name is optional - Add validation: resolvertype requires pipeline name except for remote type - Support all flag combinations: --resolvertype only, --last only, both together - Include the unit tests closes: tektoncd#2422 Signed-off-by: Shiv Verma <[email protected]>
|
@chmouel I have updated the PR. Could you please review it again? |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: chmouel The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Previously, the
tkn p start <pipeline_name> --lastcommand was used to rerun a pipeline by referencing the last successful PipelineRun. This worked well for pipelines that were defined and available on the cluster (i.e., when the Pipeline resource existed in the cluster).However, with resolver-based pipelines, the pipeline definition is not stored as a cluster-scoped resource. Instead, it is dynamically fetched from an external source, such as:
Git resolver – when the pipeline is defined in a Git repository
HTTP resolver – when the pipeline is fetched from a remote HTTP endpoint
Hub resolver – when the pipeline comes from Tekton or Artifact Hub
Bundle resolver – when the pipeline is packaged and retrieved from an OCI bundle
Cluster resolver – when it references a resource within the cluster using the resolver mechanism
Because of this, the existing
--lastflag did not work for resolver-based pipelines — the CLI had no direct reference to the original resolver configuration (e.g., URL, repository, bundle reference, etc.) used in the previous run.To address this limitation, this PR introduces a new flag called
--resolvertype.This flag allows users to specify the resolver type (such as
git,http,hub,cluster,bundle, and a special typeremoteresolvers (whan user doesn't know about resolver type they can specify--resolvertype=remotewhich would be any supported type resolver)) when re-running a resolver-based pipeline.When provided, the CLI uses the metadata from the last
PipelineRun— including the resolver type and its parameters — to reconstruct and trigger a newPipelineRunusing the same remote source.This PR supports these following combinations of flag
--lastand--resolvertypecloses: #2422
Changes
Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:
make checkmake generatedSee the contribution guide
for more details.
Release Notes