mirror of https://github.com/knative/func.git
117 lines
3.4 KiB
Go
117 lines
3.4 KiB
Go
package tekton
|
|
|
|
import (
|
|
pplnv1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1"
|
|
corev1 "k8s.io/api/core/v1"
|
|
)
|
|
|
|
func taskFetchRepository() pplnv1beta1.PipelineTask {
|
|
return pplnv1beta1.PipelineTask{
|
|
Name: "fetch-repository",
|
|
TaskRef: &pplnv1beta1.TaskRef{
|
|
Name: "git-clone",
|
|
},
|
|
Workspaces: []pplnv1beta1.WorkspacePipelineTaskBinding{{
|
|
Name: "output",
|
|
Workspace: "source-workspace",
|
|
}},
|
|
Params: []pplnv1beta1.Param{
|
|
{Name: "url", Value: *pplnv1beta1.NewArrayOrString("$(params.gitRepository)")},
|
|
{Name: "revision", Value: *pplnv1beta1.NewArrayOrString("$(params.gitRevision)")},
|
|
},
|
|
}
|
|
}
|
|
|
|
func taskBuild(runAfter string) pplnv1beta1.PipelineTask {
|
|
return pplnv1beta1.PipelineTask{
|
|
Name: "build",
|
|
TaskRef: &pplnv1beta1.TaskRef{
|
|
Name: "buildpacks",
|
|
},
|
|
RunAfter: []string{runAfter},
|
|
Workspaces: []pplnv1beta1.WorkspacePipelineTaskBinding{
|
|
{
|
|
Name: "source",
|
|
Workspace: "source-workspace",
|
|
},
|
|
{
|
|
Name: "cache",
|
|
Workspace: "cache-workspace",
|
|
}},
|
|
Params: []pplnv1beta1.Param{
|
|
{Name: "APP_IMAGE", Value: *pplnv1beta1.NewArrayOrString("$(params.imageName)")},
|
|
{Name: "SOURCE_SUBPATH", Value: *pplnv1beta1.NewArrayOrString("$(params.contextDir)")},
|
|
{Name: "BUILDER_IMAGE", Value: *pplnv1beta1.NewArrayOrString("$(params.builderImage)")},
|
|
},
|
|
}
|
|
}
|
|
|
|
// TODO this should be part of the future func-build Tekton Task as a post-build step
|
|
func taskImageDigest(runAfter string) pplnv1beta1.PipelineTask {
|
|
script := `#!/usr/bin/env bash
|
|
set -e
|
|
|
|
func_file="/workspace/source/func.yaml"
|
|
if [ "$(params.contextDir)" != "" ]; then
|
|
func_file="/workspace/source/$(params.contextDir)/func.yaml"
|
|
fi
|
|
|
|
sed -i "s|^image:.*$|image: $(params.image)|" "$func_file"
|
|
echo "Function image name: $(params.image)"
|
|
|
|
sed -i "s/^imageDigest:.*$/imageDigest: $(params.digest)/" "$func_file"
|
|
echo "Function image digest: $(params.digest)"
|
|
`
|
|
|
|
return pplnv1beta1.PipelineTask{
|
|
Name: "image-digest",
|
|
TaskSpec: &pplnv1beta1.EmbeddedTask{
|
|
TaskSpec: pplnv1beta1.TaskSpec{
|
|
Workspaces: []pplnv1beta1.WorkspaceDeclaration{
|
|
{Name: "source"},
|
|
},
|
|
Steps: []pplnv1beta1.Step{
|
|
{
|
|
Container: corev1.Container{
|
|
Image: "docker.io/library/bash:5.1.4@sha256:b208215a4655538be652b2769d82e576bc4d0a2bb132144c060efc5be8c3f5d6",
|
|
},
|
|
Script: script,
|
|
},
|
|
},
|
|
Params: []pplnv1beta1.ParamSpec{
|
|
{Name: "image"},
|
|
{Name: "digest"},
|
|
{Name: "contextDir"},
|
|
},
|
|
},
|
|
},
|
|
RunAfter: []string{runAfter},
|
|
Workspaces: []pplnv1beta1.WorkspacePipelineTaskBinding{{
|
|
Name: "source",
|
|
Workspace: "source-workspace",
|
|
}},
|
|
Params: []pplnv1beta1.Param{
|
|
{Name: "image", Value: *pplnv1beta1.NewArrayOrString("$(params.imageName)")},
|
|
{Name: "digest", Value: *pplnv1beta1.NewArrayOrString("$(tasks.build.results.APP_IMAGE_DIGEST)")},
|
|
{Name: "contextDir", Value: *pplnv1beta1.NewArrayOrString("$(params.contextDir)")},
|
|
},
|
|
}
|
|
}
|
|
|
|
func taskFuncDeploy(runAfter string) pplnv1beta1.PipelineTask {
|
|
return pplnv1beta1.PipelineTask{
|
|
Name: "deploy",
|
|
TaskRef: &pplnv1beta1.TaskRef{
|
|
Name: "func-deploy",
|
|
},
|
|
RunAfter: []string{runAfter},
|
|
Workspaces: []pplnv1beta1.WorkspacePipelineTaskBinding{{
|
|
Name: "source",
|
|
Workspace: "source-workspace",
|
|
}},
|
|
Params: []pplnv1beta1.Param{
|
|
{Name: "path", Value: *pplnv1beta1.NewArrayOrString("$(workspaces.source.path)/$(params.contextDir)")},
|
|
},
|
|
}
|
|
}
|