func/pkg/pipelines/tekton/resources.go

74 lines
2.0 KiB
Go

package tekton
import (
"context"
"errors"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"knative.dev/func/pkg/builders"
"knative.dev/func/pkg/builders/buildpacks"
"knative.dev/func/pkg/builders/s2i"
fn "knative.dev/func/pkg/functions"
)
func deletePipelines(ctx context.Context, namespace string, listOptions metav1.ListOptions) (err error) {
if namespace == "" {
return errors.New("delete pipeline: namespace required")
}
client, err := NewTektonClient(namespace)
if err != nil {
return
}
return client.Pipelines(namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, listOptions)
}
func deletePipelineRuns(ctx context.Context, namespace string, listOptions metav1.ListOptions) (err error) {
if namespace == "" {
return errors.New("delete pipeline run: namespace required")
}
client, err := NewTektonClient(namespace)
if err != nil {
return
}
return client.PipelineRuns(namespace).DeleteCollection(ctx, metav1.DeleteOptions{}, listOptions)
}
// guilderImage returns the builder image to use when building the Function
// with the Pack strategy if it can be calculated (the Function has a defined
// language runtime. Errors are checked elsewhere, so at this level they
// manifest as an inability to get a builder image = empty string.
func getBuilderImage(f fn.Function) (name string) {
if f.Build.Builder == builders.S2I {
name, _ = s2i.BuilderImage(f, builders.S2I)
} else {
name, _ = buildpacks.BuilderImage(f, builders.Pack)
}
return
}
func getPipelineName(f fn.Function) string {
var source string
if f.Build.Git.URL == "" {
source = "upload"
} else {
source = "git"
}
return fmt.Sprintf("%s-%s-%s-pipeline", f.Name, f.Build.Builder, source)
}
func getPipelineRunGenerateName(f fn.Function) string {
return fmt.Sprintf("%s-run-", getPipelineName(f))
}
func getPipelineSecretName(f fn.Function) string {
return fmt.Sprintf("%s-secret", getPipelineName(f))
}
func getPipelinePvcName(f fn.Function) string {
return fmt.Sprintf("%s-pvc", getPipelineName(f))
}