-
Couldn't load subscription status.
- Fork 264
Add --resolvertype flag to rerun a resolver based pipelinerun #2615
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure, I update it by extracting those in a helper function
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
|
/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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if I am not wrong this is "bundle" resolver and not bundles
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bundle and not bundles
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1
| Re-run the last PipelineRun that used git resolver | ||
| tkn pipeline start --last --resolvertype=git -n bar |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no pipeline name given
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is testing specifically with git resolver so should be named WithGitResolver
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/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? |
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