公众号:
tekton新课发布:ci/cd之tekton实战--其他视频教程-系统/网络/运维-CSDN程序员研修院
什么是PipelineResource
表示pipeline input资源,比如github上的源码,或者pipeline output资源,例如一个容器镜像或者构建生成的jar包等。
资源详解
type
Git Resource
Image Resource
pipelineresource/git/sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: test-task-robot-git-ssh
secrets:
- name: registry-secret
kubectl create secret docker-registry registry-secret \
--docker-server=registry.cn-beijing.aliyuncs.com \
--docker-username=195446040@qq.com \
--docker-password=123456 -n tekton
kubectl create clusterrolebinding cluster-admin-test-task --clusterrole=cluster-admin --serviceaccount=tekton:test-task-robot-git-ssh -n tekton
pipelineresource/git/res-image.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: my-image
spec:
type: image
params:
- name: url
value: registry.cn-beijing.aliyuncs.com/hxpdocker/testimage
pipelineresource/git/res-git.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: workspace
spec:
type: git
params:
- name: url
value: https://codechina.csdn.net/hxpjava1/test.git
- name: revision
value: master
pipelineresource/git/task-build-push-kaniko.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: build-push-kaniko
spec:
resources:
inputs:
- name: workspace
type: git
outputs:
- name: builtImage
type: image
params:
- name: pathToDockerFile
description: The path to the dockerfile to build
default: /workspace/workspace/Dockerfile
- name: pathToContext
description: The build context used by Kaniko
default: /workspace/workspace
steps:
- name: build-and-push
image: registry.us-west-1.aliyuncs.com/hxpapp/kaniko-executor:latest
#env:
#- name: "DOCKER_CONFIG"
# value: "/tekton/home/.docker/"
args:
- --dockerfile=$(inputs.params.pathToDockerFile)
- --destination=$(outputs.resources.builtImage.url)
- --context=$(inputs.params.pathToContext)
- --oci-layout-path=$(inputs.resources.builtImage.path)
securityContext:
runAsUser: 0
volumeMounts:
- name: kaniko-secret
mountPath: /kaniko/.docker/
volumes:
- name: kaniko-secret
secret:
secretName: registry-secret
items:
- key: .dockerconfigjson
path: config.json
pipelineresource/git/task-kubectl-deploy.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: kubectl-deploy
spec:
params:
- name: script_body
type: string
#default: "kubectl apply -f deployment.yaml -n tekton"
resources:
inputs:
- name: image
type: image
- name: workspace
type: git
steps:
- name: kubectl-deploy
image: registry.cn-shanghai.aliyuncs.com/hxpdocker/kubectl:latest
script: |
$(params.script_body)
pipelineresource/git/pipeline-my.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: mypipeline
spec:
tasks:
- name: build-app
taskRef:
name: build-push-kaniko
resources:
inputs:
- name: workspace
resource: workspace
outputs:
- name: builtImage
resource: my-image
- name: deploy-app
taskRef:
name: kubectl-deploy
resources:
inputs:
- name: workspace
resource: workspace
- name: image
resource: my-image
from:
- build-app
params:
- name: script_body
value: $(params.script_body_pipeline)
params:
- name: script_body_pipeline
type: string
resources:
- name: workspace
type: git
- name: my-image
type: image
pipelineresource/git/pipelinerun-my.yaml
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: mypipeline-run
spec:
serviceAccountName: test-task-robot-git-ssh
pipelineRef:
name: mypipeline
params:
- name: script_body_pipeline
value: "kubectl apply -f /workspace/workspace/deployment.yaml "
resources:
- name: workspace
resourceRef:
name: workspace
- name: my-image
resourceRef:
name: my-image
Pull Request Resource
pipelineresource/pullrequest/basic-user-pass.yaml
apiVersion: v1
kind: Secret
metadata:
name: basic-user-pass
annotations:
tekton.dev/git-0: https://github.com # Described below
type: kubernetes.io/basic-auth
stringData:
username: "13567436138"
password: "123456"
pipelineresource/pullrequest/build-bot.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: build-bot
secrets:
- name: basic-user-pass
pipelineresource/pullrequest/res-pr.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: pr
spec:
type: pullRequest
params:
- name: url
value: https://github.com/tektoncd/pipeline/pull/3976
- name: provider
value: github
secrets:
- fieldName: authToken
secretName: github-secrets
secretKey: token
pipelineresource/pullrequest/secret-github.yaml
apiVersion: v1
kind: Secret
metadata:
name: github-secrets
type: Opaque
data:
token: Z2hwXzgyYm13bjZ6czZ2Y1JQbGp6VlkyN1ZvUFc2WkhMQzNNcERsOQo=
pipelineresource/pullrequest/task-my.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: task-my
spec:
resources:
inputs:
- name: pr
type: pullRequest
steps:
- name: build-war
image: busybox
script: |
#!/usr/bin/env bash
ls /workspace/pr
pipelineresource/pullrequest/taskrun-my.yaml
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: taskrun-my-
spec:
serviceAccountName: build-bot
taskRef:
name: task-my
resources:
inputs:
- name: pr
resourceRef:
name: pr
Cluster Resource
pipelineresource/cluster/res-git.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: workspace
spec:
type: git
params:
- name: url
value: https://codechina.csdn.net/hxpjava1/test.git
- name: revision
value: master
pipelineresource/cluster/res-test-cluster.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: test-cluster
spec:
type: cluster
params:
- name: url
value: https://192.168.198.154:6443
- name: cadata
value: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1RENDQXFDZ0F3SUJBZ0lVQ1NZRVlnZW92QWlvbEhqUzl1V1lKRmdKSW1nd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1lURUxNQWtHQTFVRUJoTUNRMDR4RVRBUEJnTlZCQWdUQ0VoaGJtZGFhRzkxTVFzd0NRWURWUVFIRXdKWQpVekVNTUFvR0ExVUVDaE1EYXpoek1ROHdEUVlEVlFRTEV3WlRlWE4wWlcweEV6QVJCZ05WQkFNVENtdDFZbVZ5CmJtVjBaWE13SUJjTk1qRXdOREF4TURrMU1qQXdXaGdQTWpFeU1UQXpNRGd3T1RVeU1EQmFNR0V4Q3pBSkJnTlYKQkFZVEFrTk9NUkV3RHdZRFZRUUlFd2hJWVc1bldtaHZkVEVMTUFrR0ExVUVCeE1DV0ZNeEREQUtCZ05WQkFvVApBMnM0Y3pFUE1BMEdBMVVFQ3hNR1UzbHpkR1Z0TVJNd0VRWURWUVFERXdwcmRXSmxjbTVsZEdWek1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXJqVmFmSDR6V0pDaksyRjY5R3VNTytVRmNVS3cKZWQ3enlSaHBhZlR6ZzkzTkZQNUFaSHkwMlJvdWUxWWRtVXpxVjJZczRiaVVLUlRLbFc2NWJQRGxBeklSalFiNApiYS9aYTgxUllpVWZ5ZndaSGpTMjdmQ0xsVGp3WlFIaHJCZS9xYUE4dzdHb0Q0Mm8rT1dXYk9JeVB3c3p4TmJ3CjVxOVFObHJVY3dLV3ZTZnozTGV1ZEVBQmNZWEd4NmppbndOZU5aYkxvM0NCMi9STEw1M0prdk5hTlU5bUltOGUKUlZnTkNOZ3BPWHREeWJJdXQyTTh6SWFERGU0d3dWVzVLLzlIZHMvOTkrUlNrTnJZcnBRYkpVekk3UnZsaGl5Rwppckc4bW5pRTBXQnVSZCtseXJFQ1hZaDBOeFlJSnFjcFViUnBjRXRUaXk3MWdsWitKVVlsVWErb1FRSURBUUFCCm8yWXdaREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBakFkQmdOVkhRNEUKRmdRVWJUS0c1UmR3UE9VMDJFK2sxcW1FSWtJSHZNY3dId1lEVlIwakJCZ3dGb0FVYlRLRzVSZHdQT1UwMkUrawoxcW1FSWtJSHZNY3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSmZMUEo4SVhoV1hzSkR2UnlsQiszQTA3eWVZCnRvZDVGeVpieElPWFA4OUFCb3VvellwclNRYXFSTFIxY0lZeEVDTkx4ZEhQcjQ5VjZZOW1BM016NzAyUjk5bmIKQTY4eXVqMHNtMml5Qmlud0JaSUh3SlY2RllZTWRsdk8zRUE1aXpRSWduSkxCNW1vc0JPYnhMZmV0YUlHTnVEaApGR1ZGZzNhRDk1Y094KzlyenV6amthMFh3T29WRUVNS0I4WHRpMHhLME4xK1RCano2V3MzL0psN2orME5JazVOCjZmUnNLN0Q1NlB4d3VxR1Y2dk41WFJ0N3NhZHNod2tpTnFoL0haekRhTjlxcWRRQnRXVE1LRERsc1VWTTg1WmEKNDVwaElpNHV4dVhuYUhyMkJCeXdjaGEwalYramMyNUFhRFU2bm1HQ0dZZ1NkNWhaYlVJQ2hHR2l5Wnc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
- name: token
value: eyJhbGciOiJSUzI1NiIsImtpZCI6IjV2Ny1kcmNpMXpITzhKRU5aaV9KOGx5OGotLTFPc1hpUDVLQlhhUFJESEkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ0ZWt0b24iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoidGVzdC10YXNrLXJvYm90LWdpdC1zc2gtdG9rZW4tamIydGIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoidGVzdC10YXNrLXJvYm90LWdpdC1zc2giLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJhYmQyMTM2My1mMTQyLTRiZjQtOWY1Yy1hMDAwOGI1ZGVkYTYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6dGVrdG9uOnRlc3QtdGFzay1yb2JvdC1naXQtc3NoIn0.jCuclt66msTO-tw_qVCZYCckATL5wjbvBi7Fui6e5EQRjwUkv6luNrv5C_TTH6EOchfRtW0-QIxvf433USZCMTam06eahfMbtRv2DlrgBIyR3ZdSADh6dRaOlnTKI4COw1GU0UKpayBTM8N7ItQgi4c-JBYdDXy-WEhMhg2L4VPCY5kv4clkUzasHcyWh9lNdu_AKT0OXA5QArNjJXKLGJgYjyhIyPfBCZdMGcS50RZvWb25QXIFIkoQl9MDpMiaFJaAL8kedhhLESDT1KnBG6-C-KEDWVuNNFgKrh_VcU4LEZURv4coDIdPDDuEQ1IUYrO5TpDwngwwTXwTtBZWpA
pipelineresource/cluster/target-cluster-secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: target-cluster-secrets
data:
cadatakey: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1RENDQXFDZ0F3SUJBZ0lVQ1NZRVlnZW92QWlvbEhqUzl1V1lKRmdKSW1nd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1lURUxNQWtHQTFVRUJoTUNRMDR4RVRBUEJnTlZCQWdUQ0VoaGJtZGFhRzkxTVFzd0NRWURWUVFIRXdKWQpVekVNTUFvR0ExVUVDaE1EYXpoek1ROHdEUVlEVlFRTEV3WlRlWE4wWlcweEV6QVJCZ05WQkFNVENtdDFZbVZ5CmJtVjBaWE13SUJjTk1qRXdOREF4TURrMU1qQXdXaGdQTWpFeU1UQXpNRGd3T1RVeU1EQmFNR0V4Q3pBSkJnTlYKQkFZVEFrTk9NUkV3RHdZRFZRUUlFd2hJWVc1bldtaHZkVEVMTUFrR0ExVUVCeE1DV0ZNeEREQUtCZ05WQkFvVApBMnM0Y3pFUE1BMEdBMVVFQ3hNR1UzbHpkR1Z0TVJNd0VRWURWUVFERXdwcmRXSmxjbTVsZEdWek1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXJqVmFmSDR6V0pDaksyRjY5R3VNTytVRmNVS3cKZWQ3enlSaHBhZlR6ZzkzTkZQNUFaSHkwMlJvdWUxWWRtVXpxVjJZczRiaVVLUlRLbFc2NWJQRGxBeklSalFiNApiYS9aYTgxUllpVWZ5ZndaSGpTMjdmQ0xsVGp3WlFIaHJCZS9xYUE4dzdHb0Q0Mm8rT1dXYk9JeVB3c3p4TmJ3CjVxOVFObHJVY3dLV3ZTZnozTGV1ZEVBQmNZWEd4NmppbndOZU5aYkxvM0NCMi9STEw1M0prdk5hTlU5bUltOGUKUlZnTkNOZ3BPWHREeWJJdXQyTTh6SWFERGU0d3dWVzVLLzlIZHMvOTkrUlNrTnJZcnBRYkpVekk3UnZsaGl5Rwppckc4bW5pRTBXQnVSZCtseXJFQ1hZaDBOeFlJSnFjcFViUnBjRXRUaXk3MWdsWitKVVlsVWErb1FRSURBUUFCCm8yWXdaREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBakFkQmdOVkhRNEUKRmdRVWJUS0c1UmR3UE9VMDJFK2sxcW1FSWtJSHZNY3dId1lEVlIwakJCZ3dGb0FVYlRLRzVSZHdQT1UwMkUrawoxcW1FSWtJSHZNY3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSmZMUEo4SVhoV1hzSkR2UnlsQiszQTA3eWVZCnRvZDVGeVpieElPWFA4OUFCb3VvellwclNRYXFSTFIxY0lZeEVDTkx4ZEhQcjQ5VjZZOW1BM016NzAyUjk5bmIKQTY4eXVqMHNtMml5Qmlud0JaSUh3SlY2RllZTWRsdk8zRUE1aXpRSWduSkxCNW1vc0JPYnhMZmV0YUlHTnVEaApGR1ZGZzNhRDk1Y094KzlyenV6amthMFh3T29WRUVNS0I4WHRpMHhLME4xK1RCano2V3MzL0psN2orME5JazVOCjZmUnNLN0Q1NlB4d3VxR1Y2dk41WFJ0N3NhZHNod2tpTnFoL0haekRhTjlxcWRRQnRXVE1LRERsc1VWTTg1WmEKNDVwaElpNHV4dVhuYUhyMkJCeXdjaGEwalYramMyNUFhRFU2bm1HQ0dZZ1NkNWhaYlVJQ2hHR2l5Wnc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
tokenkey: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqVjJOeTFrY21OcE1YcElUemhLUlU1YWFWOUtPR3g1T0dvdExURlBjMWhwVURWTFFsaGhVRkpFU0VraWZRLmV5SnBjM01pT2lKcmRXSmxjbTVsZEdWekwzTmxjblpwWTJWaFkyTnZkVzUwSWl3aWEzVmlaWEp1WlhSbGN5NXBieTl6WlhKMmFXTmxZV05qYjNWdWRDOXVZVzFsYzNCaFkyVWlPaUowWld0MGIyNGlMQ0pyZFdKbGNtNWxkR1Z6TG1sdkwzTmxjblpwWTJWaFkyTnZkVzUwTDNObFkzSmxkQzV1WVcxbElqb2lkR1Z6ZEMxMFlYTnJMWEp2WW05MExXZHBkQzF6YzJndGRHOXJaVzR0YW1JeWRHSWlMQ0pyZFdKbGNtNWxkR1Z6TG1sdkwzTmxjblpwWTJWaFkyTnZkVzUwTDNObGNuWnBZMlV0WVdOamIzVnVkQzV1WVcxbElqb2lkR1Z6ZEMxMFlYTnJMWEp2WW05MExXZHBkQzF6YzJnaUxDSnJkV0psY201bGRHVnpMbWx2TDNObGNuWnBZMlZoWTJOdmRXNTBMM05sY25acFkyVXRZV05qYjNWdWRDNTFhV1FpT2lKaFltUXlNVE0yTXkxbU1UUXlMVFJpWmpRdE9XWTFZeTFoTURBd09HSTFaR1ZrWVRZaUxDSnpkV0lpT2lKemVYTjBaVzA2YzJWeWRtbGpaV0ZqWTI5MWJuUTZkR1ZyZEc5dU9uUmxjM1F0ZEdGemF5MXliMkp2ZEMxbmFYUXRjM05vSW4wLmpDdWNsdDY2bXNUTy10d19xVkNaWUNja0FUTDV3amJ2Qmk3RnVpNmU1RVFSandVa3Y2bHVOcnY1Q19UVEg2RU9jaGZSdFcwLVFJeHZmNDMzVVNaQ01UYW0wNmVhaGZNYnRSdjJEbHJnQkl5UjNaZFNBRGg2ZFJhT2xuVEtJNENPdzFHVTBVS3BheUJUTThON0l0UWdpNGMtSkJZZERYeS1XRWhNaGcyTDRWUENZNWt2NGNsa1V6YXNIY3lXaDlsTmR1X0FLVDBPWEE1UUFyTmpKWEtMR0pnWWp5aEl5UGZCQ1pkTUdjUzUwUlp2V2IyNVFYSUZJa29RbDlNRHBNaWFGSmFBTDhrZWRoaExFU0RUMUtuQkc2LUMtS0VEV1Z1Tk5GZ0tyaF9WY1U0TEVaVVJ2NGNvRElkUEREdUVRMUlVWXJPNVRwRHduZ3d3VFh3VHRCWldwQQ==
pipelineresource/cluster/res-test-cluster2.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: test-cluster
spec:
type: cluster
params:
- name: url
value: https://192.168.198.154:6443
secrets:
- fieldName: token
secretKey: tokenkey
secretName: target-cluster-secrets
- fieldName: cadata
secretKey: cadatakey
secretName: target-cluster-secrets
pipelineresource/cluster/task-deploy.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: deploy-image
spec:
resources:
inputs:
- name: workspace
type: git
- name: test-cluster
type: cluster
steps:
- name: deploy
image: registry.cn-shanghai.aliyuncs.com/hxpdocker/kubectl-without-config:latest
script:
#!/bin/sh
kubectl --kubeconfig /workspace/$(resources.inputs.test-cluster.name)/kubeconfig --context $(resources.inputs.test-cluster.name) apply -f /workspace/workspace/deployment.yaml
Storage Resource
Only blob storage type Google Cloud Storage(gcs) is supported as of now via GCS storage resource
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: wizzbang-storage
spec:
type: storage
params:
- name: type
value: gcs
- name: location
value: gs://some-bucket
- name: dir
value: "y" # This can have any value to be considered "true"
Cloud Event Resource
pipelineresource/event/res-event.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: event-to-sink
spec:
type: cloudEvent
params:
- name: targetURI
value: http://sink:8080
pipelineresource/event/task-event.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: event
spec:
resources:
outputs:
- name: event-to-sink
type: cloudEvent
steps:
- name: hello
image: busybox
script:
#!/bin/sh
echo hello
description
pipelineresource/res-description.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: workspace-java
spec:
description: test
type: git
params:
- name: url
value: https://github.com/skeeto/sample-java-project.git
- name: revision
value: master
params
pipelineresource/res-params.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: workspace-java
spec:
type: git
params:
- name: url
value: https://github.com/skeeto/sample-java-project.git
- name: revision
value: master
optional
pipelineresource/optional/res-workspace-java.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: workspace-java
spec:
type: git
params:
- name: url
value: https://github.com/skeeto/sample-java-project.git
- name: revision
value: master
pipelineresource/optional/task-optional.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: optional
spec:
resources:
inputs:
- name: workspace
type: git
optional: true
steps:
- name: ls
image: busybox
command:
- ls
args:
- “/workspace/”
pipelineresource/optional/taskrun-optional.yaml
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: optional-
spec:
taskRef:
name: volume-task
targetPath
pipelineresource/targetPath/res-workspace.yaml
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: workspace-go
spec:
type: git
params:
- name: url
value: https://github.com/deis/helloworld.git
- name: revision
value: master
pipelineresource/targetPath/task-go-test.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: go-test
namespace: default
spec:
resources:
inputs:
- name: workspace
type: git
targetPath: go/src/
steps:
- name: unit-tests
image: golang
command: ["go"]
args:
- "build"
- "helloworld.go"
workingDir: "/workspace/go/src/"
env:
- name: GOPATH
value: /workspace/go
tkn task start -f task-go-test.yaml -n tekton