mirror of https://github.com/knative/func.git
225 lines
6.2 KiB
Go
225 lines
6.2 KiB
Go
package tekton
|
|
|
|
const (
|
|
// s2iPipelineTemplate contains the S2I template used for both Tekton standard and PAC Pipeline
|
|
s2iPipelineTemplate = `
|
|
apiVersion: tekton.dev/v1beta1
|
|
kind: Pipeline
|
|
metadata:
|
|
labels:
|
|
{{range $key, $value := .Labels -}}
|
|
"{{$key}}": "{{$value}}"
|
|
{{end}}
|
|
annotations:
|
|
{{range $key, $value := .Annotations -}}
|
|
"{{$key}}": "{{$value}}"
|
|
{{end}}
|
|
name: {{.PipelineName}}
|
|
spec:
|
|
params:
|
|
- default: ''
|
|
description: Git repository that hosts the function project
|
|
name: gitRepository
|
|
type: string
|
|
- description: Git revision to build
|
|
name: gitRevision
|
|
type: string
|
|
- default: ''
|
|
description: Path where the function project is
|
|
name: contextDir
|
|
type: string
|
|
- description: Function image name
|
|
name: imageName
|
|
type: string
|
|
- description: The registry associated with the function image
|
|
name: registry
|
|
type: string
|
|
- description: Builder image to be used
|
|
name: builderImage
|
|
type: string
|
|
- description: Environment variables to set during build time
|
|
name: buildEnvs
|
|
type: array
|
|
- description: URL containing the default assemble and run scripts for the builder image
|
|
name: s2iImageScriptsUrl
|
|
type: string
|
|
default: 'image:///usr/libexec/s2i'
|
|
tasks:
|
|
{{.GitCloneTaskRef}}
|
|
- name: scaffold
|
|
params:
|
|
- name: path
|
|
value: $(workspaces.source.path)/$(params.contextDir)
|
|
workspaces:
|
|
- name: source
|
|
workspace: source-workspace
|
|
{{.RunAfterFetchSources}}
|
|
{{.FuncScaffoldTaskRef}}
|
|
- name: build
|
|
params:
|
|
- name: IMAGE
|
|
value: $(params.imageName)
|
|
- name: REGISTRY
|
|
value: $(params.registry)
|
|
- name: PATH_CONTEXT
|
|
value: $(params.contextDir)
|
|
- name: BUILDER_IMAGE
|
|
value: $(params.builderImage)
|
|
- name: ENV_VARS
|
|
value:
|
|
- '$(params.buildEnvs[*])'
|
|
- name: S2I_IMAGE_SCRIPTS_URL
|
|
value: $(params.s2iImageScriptsUrl)
|
|
runAfter:
|
|
- scaffold
|
|
{{.FuncS2iTaskRef}}
|
|
workspaces:
|
|
- name: source
|
|
workspace: source-workspace
|
|
- name: cache
|
|
workspace: cache-workspace
|
|
- name: dockerconfig
|
|
workspace: dockerconfig-workspace
|
|
- name: deploy
|
|
params:
|
|
- name: path
|
|
value: $(workspaces.source.path)/$(params.contextDir)
|
|
- name: image
|
|
value: $(params.imageName)@$(tasks.build.results.IMAGE_DIGEST)
|
|
runAfter:
|
|
- build
|
|
{{.FuncDeployTaskRef}}
|
|
workspaces:
|
|
- name: source
|
|
workspace: source-workspace
|
|
workspaces:
|
|
- description: Directory where function source is located.
|
|
name: source-workspace
|
|
- description: Directory where build cache is stored.
|
|
name: cache-workspace
|
|
- description: Directory containing image registry credentials stored in config.json file.
|
|
name: dockerconfig-workspace
|
|
optional: true
|
|
`
|
|
// s2iRunTemplate contains the S2I template used for Tekton standard PipelineRun
|
|
s2iRunTemplate = `
|
|
apiVersion: tekton.dev/v1beta1
|
|
kind: PipelineRun
|
|
metadata:
|
|
labels:
|
|
{{range $key, $value := .Labels -}}
|
|
"{{$key}}": "{{$value}}"
|
|
{{end}}
|
|
tekton.dev/pipeline: {{.PipelineName}}
|
|
annotations:
|
|
# User defined Annotations
|
|
{{range $key, $value := .Annotations -}}
|
|
"{{$key}}": "{{$value}}"
|
|
{{end}}
|
|
generateName: {{.PipelineRunName}}
|
|
spec:
|
|
params:
|
|
- name: gitRepository
|
|
value: {{.RepoUrl}}
|
|
- name: gitRevision
|
|
value: {{.Revision}}
|
|
- name: contextDir
|
|
value: {{.ContextDir}}
|
|
- name: imageName
|
|
value: {{.FunctionImage}}
|
|
- name: registry
|
|
value: {{.Registry}}
|
|
- name: builderImage
|
|
value: {{.BuilderImage}}
|
|
- name: buildEnvs
|
|
value:
|
|
{{range .BuildEnvs -}}
|
|
- {{.}}
|
|
{{end}}
|
|
- name: s2iImageScriptsUrl
|
|
value: {{.S2iImageScriptsUrl}}
|
|
pipelineRef:
|
|
name: {{.PipelineName}}
|
|
workspaces:
|
|
- name: source-workspace
|
|
persistentVolumeClaim:
|
|
claimName: {{.PvcName}}
|
|
subPath: source
|
|
- name: cache-workspace
|
|
persistentVolumeClaim:
|
|
claimName: {{.PvcName}}
|
|
subPath: cache
|
|
- name: dockerconfig-workspace
|
|
secret:
|
|
secretName: {{.SecretName}}
|
|
`
|
|
// s2iRunTemplatePAC contains the S2I template used for Tekton PAC PipelineRun
|
|
s2iRunTemplatePAC = `
|
|
apiVersion: tekton.dev/v1beta1
|
|
kind: PipelineRun
|
|
metadata:
|
|
labels:
|
|
{{range $key, $value := .Labels -}}
|
|
"{{$key}}": "{{$value}}"
|
|
{{end}}
|
|
tekton.dev/pipeline: {{.PipelineName}}
|
|
annotations:
|
|
# The event we are targeting as seen from the webhook payload
|
|
# this can be an array too, i.e: [pull_request, push]
|
|
pipelinesascode.tekton.dev/on-event: "[push]"
|
|
|
|
# The branch or tag we are targeting (ie: main, refs/tags/*)
|
|
pipelinesascode.tekton.dev/on-target-branch: "[{{.PipelinesTargetBranch}}]"
|
|
|
|
# Fetch the git-clone task from hub
|
|
pipelinesascode.tekton.dev/task: {{.GitCloneTaskRef}}
|
|
|
|
# Fetch the pipelie definition from the .tekton directory
|
|
pipelinesascode.tekton.dev/pipeline: {{.PipelineYamlURL}}
|
|
|
|
# How many runs we want to keep attached to this event
|
|
pipelinesascode.tekton.dev/max-keep-runs: "5"
|
|
|
|
# User defined Annotations
|
|
{{range $key, $value := .Annotations -}}
|
|
"{{$key}}": "{{$value}}"
|
|
{{end}}
|
|
generateName: {{.PipelineRunName}}
|
|
spec:
|
|
params:
|
|
- name: gitRepository
|
|
value: {{.RepoUrl}}
|
|
- name: gitRevision
|
|
value: {{.Revision}}
|
|
- name: contextDir
|
|
value: {{.ContextDir}}
|
|
- name: imageName
|
|
value: {{.FunctionImage}}
|
|
- name: registry
|
|
value: {{.Registry}}
|
|
- name: builderImage
|
|
value: {{.BuilderImage}}
|
|
- name: buildEnvs
|
|
value:
|
|
{{range .BuildEnvs -}}
|
|
- {{.}}
|
|
{{end}}
|
|
- name: s2iImageScriptsUrl
|
|
value: {{.S2iImageScriptsUrl}}
|
|
pipelineRef:
|
|
name: {{.PipelineName}}
|
|
workspaces:
|
|
- name: source-workspace
|
|
persistentVolumeClaim:
|
|
claimName: {{.PvcName}}
|
|
subPath: source
|
|
- name: cache-workspace
|
|
persistentVolumeClaim:
|
|
claimName: {{.PvcName}}
|
|
subPath: cache
|
|
- name: dockerconfig-workspace
|
|
secret:
|
|
secretName: {{.SecretName}}
|
|
`
|
|
)
|