func/pkg/pipelines/tekton/templates_s2i.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}}
`
)