Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions pkg/cmd/clustertask/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,31 +210,31 @@ func startClusterTask(opt startOptions, args []string) error {
return err
}

if opt.TimeOut != "" {
timeoutDuration, err := time.ParseDuration(opt.TimeOut)
if opt.Last || opt.UseTaskRun != "" {
taskRunOpts := options.TaskRunOpts{
CliParams: opt.cliparams,
Last: opt.Last,
UseTaskRun: opt.UseTaskRun,
PrefixName: opt.PrefixName,
}
err := taskRunOpts.UseTaskRunFrom(tr, cs, ctname, "ClusterTask")
if err != nil {
return err
}
tr.Spec.Timeout = &metav1.Duration{Duration: timeoutDuration}
}

if opt.PrefixName == "" {
if opt.PrefixName == "" && !opt.Last && opt.UseTaskRun == "" {
tr.ObjectMeta.GenerateName = ctname + "-run-"
} else {
} else if opt.PrefixName != "" {
tr.ObjectMeta.GenerateName = opt.PrefixName + "-"
}

if opt.Last || opt.UseTaskRun != "" {
taskRunOpts := options.TaskRunOpts{
CliParams: opt.cliparams,
Last: opt.Last,
UseTaskRun: opt.UseTaskRun,
PrefixName: opt.PrefixName,
}
err := taskRunOpts.UseTaskRunFrom(tr, cs, ctname, "ClusterTask")
if opt.TimeOut != "" {
timeoutDuration, err := time.ParseDuration(opt.TimeOut)
if err != nil {
return err
}
tr.Spec.Timeout = &metav1.Duration{Duration: timeoutDuration}
}

if tr.Spec.Resources == nil {
Expand Down
90 changes: 90 additions & 0 deletions pkg/cmd/clustertask/start_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1932,3 +1932,93 @@ func Test_start_use_taskrun_cancelled_status_v1beta1(t *testing.T) {
// Assert that new TaskRun does not contain cancelled status of previous run
test.AssertOutput(t, v1beta1.TaskRunSpecStatus(""), tr.Spec.Status)
}

func Test_start_clustertask_last_override_timeout(t *testing.T) {
ctasks := []*v1beta1.ClusterTask{
{
ObjectMeta: v1.ObjectMeta{
Name: "clustertask",
},
Spec: v1beta1.TaskSpec{
Steps: []v1beta1.Step{
{
Container: corev1.Container{
Name: "hello",
Image: "busybox",
},
},
{
Container: corev1.Container{
Name: "exit",
Image: "busybox",
},
},
},
},
},
}

// Add timeout to last TaskRun for ClusterTask
timeoutDuration, _ := time.ParseDuration("10s")
trName := "ct-run"
taskruns := []*v1beta1.TaskRun{
{

ObjectMeta: v1.ObjectMeta{
Name: trName,
Labels: map[string]string{"tekton.dev/clustertask": "clustertask"},
Namespace: "ns",
},
Spec: v1beta1.TaskRunSpec{
TaskRef: &v1beta1.TaskRef{
Name: "clustertask",
Kind: v1beta1.ClusterTaskKind,
},
Timeout: &metav1.Duration{Duration: timeoutDuration},
},
},
}

ns := []*corev1.Namespace{
{
ObjectMeta: metav1.ObjectMeta{
Name: "ns",
},
},
}

seedData, _ := test.SeedV1beta1TestData(t, pipelinev1beta1test.Data{Namespaces: ns, ClusterTasks: ctasks, TaskRuns: taskruns})
objs := []runtime.Object{ctasks[0], taskruns[0]}
trName2 := trName + "-2"
tdc := newDynamicClientOpt(versionB1, trName2, objs...)

cs := pipelinetest.Clients{
Pipeline: seedData.Pipeline,
Kube: seedData.Kube,
}
cs.Pipeline.Resources = cb.APIResourceList(versionB1, []string{"clustertask", "taskrun"})
dc, _ := tdc.Client(
cb.UnstructuredV1beta1CT(ctasks[0], versionB1),
cb.UnstructuredV1beta1TR(taskruns[0], versionB1),
)
p := &test.Params{Tekton: cs.Pipeline, Kube: cs.Kube, Dynamic: dc}

clustertask := Command(p)
// Specify new timeout value to override previous value
got, err := test.ExecuteCommand(clustertask, "start", "clustertask", "--use-taskrun", trName, "--timeout", "1s", "-n", "ns")
if err != nil {
t.Errorf("Error listing taskruns %s", err.Error())
}

expected := "TaskRun started: ct-run-2\n\nIn order to track the TaskRun progress run:\ntkn taskrun logs ct-run-2 -f -n ns\n"
test.AssertOutput(t, expected, got)
clients, _ := p.Clients()
tr, err := traction.Get(clients, trName2, metav1.GetOptions{}, "ns")
if err != nil {
t.Errorf("Error listing taskruns %s", err.Error())
}

// Assert newly started TaskRun has new timeout value
timeoutDuration, _ = time.ParseDuration("1s")
test.AssertOutput(t, timeoutDuration, tr.Spec.Timeout.Duration)
}
36 changes: 18 additions & 18 deletions pkg/cmd/pipeline/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,20 +186,14 @@ func (opt *startOptions) run(pipeline *v1beta1.Pipeline) error {
}

func (opt *startOptions) startPipeline(pipelineStart *v1beta1.Pipeline) error {
objMeta := metav1.ObjectMeta{
Namespace: opt.cliparams.Namespace(),
}
if opt.PrefixName == "" {
objMeta.GenerateName = pipelineStart.ObjectMeta.Name + "-run-"
} else {
objMeta.GenerateName = opt.PrefixName + "-"
}

cs, err := opt.cliparams.Clients()
if err != nil {
return err
}

objMeta := metav1.ObjectMeta{
Namespace: opt.cliparams.Namespace(),
}
var pr *v1beta1.PipelineRun
if opt.Filename == "" {
pr = &v1beta1.PipelineRun{
Expand All @@ -225,14 +219,6 @@ func (opt *startOptions) startPipeline(pipelineStart *v1beta1.Pipeline) error {
}
}

if opt.TimeOut != "" {
timeoutDuration, err := time.ParseDuration(opt.TimeOut)
if err != nil {
return err
}
pr.Spec.Timeout = &metav1.Duration{Duration: timeoutDuration}
}

if opt.Last || opt.UsePipelineRun != "" {
var usepr *v1beta1.PipelineRun
if opt.Last {
Expand All @@ -247,18 +233,32 @@ func (opt *startOptions) startPipeline(pipelineStart *v1beta1.Pipeline) error {
}
}

// if --prefix-name is specified by user, allow name to be used for pipelinerun
if len(usepr.ObjectMeta.GenerateName) > 0 && opt.PrefixName == "" {
pr.ObjectMeta.GenerateName = usepr.ObjectMeta.GenerateName
} else if opt.PrefixName == "" {
pr.ObjectMeta.GenerateName = usepr.ObjectMeta.Name + "-"
}

// Copy over spec from last or previous PipelineRun to use same values for this PipelineRun
pr.Spec = usepr.Spec
// Reapply blank status in case PipelineRun used was cancelled
pr.Spec.Status = ""
}

if opt.PrefixName == "" && !opt.Last && opt.UsePipelineRun == "" {
pr.ObjectMeta.GenerateName = pipelineStart.ObjectMeta.Name + "-run-"
} else if opt.PrefixName != "" {
pr.ObjectMeta.GenerateName = opt.PrefixName + "-"
}

if opt.TimeOut != "" {
timeoutDuration, err := time.ParseDuration(opt.TimeOut)
if err != nil {
return err
}
pr.Spec.Timeout = &metav1.Duration{Duration: timeoutDuration}
}

if err := mergeRes(pr, opt.Resources); err != nil {
return err
}
Expand Down
Loading