cat <<EOF | kubectl apply -f -
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: developer-defined-jenkins-tekton-pipeline
namespace: developer-namespace
labels:
#! This label should be provided to the Workload so that
#! the supply chain can find this pipeline
apps.tanzu.vmware.com/pipeline: jenkins-pipeline
spec:
results:
- name: jenkins-job-url #! To show the job URL on the
#! Tanzu Application Platform GUI
value: $(tasks.jenkins-task.results.jenkins-job-url)
params:
- name: source-url #! Required
- name: source-revision #! Required
- name: secret-name #! Required
- name: job-name #! Required
- name: job-params #! Required
tasks:
#! Required: Include the built-in task that triggers the
#! given job in Jenkins
- name: jenkins-task
taskRef:
name: jenkins-task
kind: ClusterTask
params:
- name: source-url
value: $(params.source-url)
- name: source-revision
value: $(params.source-revision)
- name: secret-name
value: $(params.secret-name)
- name: job-name
value: $(params.job-name)
- name: job-params
value: $(params.job-params)
EOF
Tekton pipeline은 아래와 같이 이루어 져 있다.
개발자는 아래와 같이 매개변수를 사용하여 Tekton pipeline을 생성 해야 합니다.
source-url, required: 테스트 중인 모든 소스 코드가 포함된 소스 형상관리의 주소를 작성
source-revision, required: Branch명을 넣어 주면 된다.
secret-name, required: Jenkins의 사용자 이름, 암호, 인증서(선택사항)가 포함된 Secret Name
job-name, required: Jenkins에 설정한 Pipeline의 이름과 일치
job-params, required: Workload에 작성 한 JSON 문자열로 인코딩된 키-값 쌍 목록
** 여기에 작성 한 값이 JENKINS에 전달해야 되는거 같은대 안되는 거 같다. 개인적인 생각. 이렇게 동작하라고 사용 하는거 같은대.. 실제로 동작하지 않아 보임.
Tasks:
jenkins-task, required: 설정된 ClusterTask중 Jenkins작업을 트리거 하기 위해 실행, kubeclt get clustertask로 이름을 확인 할 수 있다.