diff --git a/pipeline/backend/kubernetes/kubernetes.go b/pipeline/backend/kubernetes/kubernetes.go index 4620dcfd2..81aaf24e1 100644 --- a/pipeline/backend/kubernetes/kubernetes.go +++ b/pipeline/backend/kubernetes/kubernetes.go @@ -173,8 +173,8 @@ func (e *kube) SetupWorkflow(ctx context.Context, conf *types.Config, taskUUID s extraHosts := []types.HostAlias{} for _, stage := range conf.Stages { - if stage.Alias == "services" { - for _, step := range stage.Steps { + for _, step := range stage.Steps { + if step.Type == types.StepTypeService { svc, err := startService(ctx, e, step) if err != nil { return err @@ -196,6 +196,11 @@ func (e *kube) SetupWorkflow(ctx context.Context, conf *types.Config, taskUUID s // Start the pipeline step. func (e *kube) StartStep(ctx context.Context, step *types.Step, taskUUID string) error { + if step.Type == types.StepTypeService { + // a service should be started by SetupWorkflow so we can ignore it + log.Trace().Msgf("StartStep got service '%s', ignoring it.", step.Name) + return nil + } log.Trace().Str("taskUUID", taskUUID).Msgf("Starting step: %s", step.Name) _, err := startPod(ctx, e, step) return err @@ -204,7 +209,7 @@ func (e *kube) StartStep(ctx context.Context, step *types.Step, taskUUID string) // Wait for the pipeline step to complete and returns // the completion results. func (e *kube) WaitStep(ctx context.Context, step *types.Step, taskUUID string) (*types.State, error) { - podName, err := dnsName(step.Name) + podName, err := stepToPodName(step) if err != nil { return nil, err } @@ -264,7 +269,7 @@ func (e *kube) WaitStep(ctx context.Context, step *types.Step, taskUUID string) // Tail the pipeline step logs. func (e *kube) TailStep(ctx context.Context, step *types.Step, taskUUID string) (io.ReadCloser, error) { - podName, err := dnsName(step.Name) + podName, err := stepToPodName(step) if err != nil { return nil, err } @@ -327,13 +332,14 @@ func (e *kube) TailStep(ctx context.Context, step *types.Step, taskUUID string) } }() return rc, nil - - // rc := io.NopCloser(bytes.NewReader(e.logs.Bytes())) - // e.logs.Reset() - // return rc, nil } func (e *kube) DestroyStep(_ context.Context, step *types.Step, taskUUID string) error { + if step.Type == types.StepTypeService { + // a service should be stopped by DestroyWorkflow so we can ignore it + log.Trace().Msgf("DestroyStep got service '%s', ignoring it.", step.Name) + return nil + } log.Trace().Str("taskUUID", taskUUID).Msgf("Stopping step: %s", step.Name) err := stopPod(e.ctx, e, step, defaultDeleteOptions) return err diff --git a/pipeline/backend/kubernetes/pod.go b/pipeline/backend/kubernetes/pod.go index eb85f9f46..dbf860870 100644 --- a/pipeline/backend/kubernetes/pod.go +++ b/pipeline/backend/kubernetes/pod.go @@ -66,6 +66,13 @@ func mkPod(namespace, name, image, workDir, goos, serviceAccountName string, return pod, nil } +func stepToPodName(step *types.Step) (name string, err error) { + if step.Type == types.StepTypeService { + return serviceName(step) + } + return podName(step) +} + func podName(step *types.Step) (string, error) { return dnsName(step.Name) }