ฉันเปลี่ยนไปใช้การประกาศเมื่อเร็ว ๆ นี้จากสคริปต์ด้วยตัวแทน kubernetes จนถึงเดือนกรกฎาคม '18 ไปป์ไลน์ที่เปิดเผยไม่สามารถระบุฝัก kubernetes ได้อย่างเต็มที่ อย่างไรก็ตามด้วยyamlFile
ขั้นตอนเพิ่มเติมคุณสามารถอ่านเทมเพลตพ็อดของคุณจากไฟล์ yaml ใน repo ของคุณได้
จากนั้นให้คุณใช้ปลั๊กอิน kubernetes ที่ยอดเยี่ยมของเช่น vscode เพื่อตรวจสอบเทมเพลตพ็อดของคุณจากนั้นอ่านลงใน Jenkinsfile ของคุณและใช้คอนเทนเนอร์ตามขั้นตอนตามที่คุณต้องการ
pipeline {
agent {
kubernetes {
label 'jenkins-pod'
yamlFile 'jenkinsPodTemplate.yml'
}
}
stages {
stage('Checkout code and parse Jenkinsfile.json') {
steps {
container('jnlp'){
script{
inputFile = readFile('Jenkinsfile.json')
config = new groovy.json.JsonSlurperClassic().parseText(inputFile)
containerTag = env.BRANCH_NAME + '-' + env.GIT_COMMIT.substring(0, 7)
println "pipeline config ==> ${config}"
} // script
} // container('jnlp')
} // steps
} // stage
ดังที่ได้กล่าวไว้ข้างต้นคุณสามารถเพิ่มบล็อคสคริปต์ได้ ตัวอย่างเทมเพลตพ็อดที่มี jnlp และ docker แบบกำหนดเอง
apiVersion: v1
kind: Pod
metadata:
name: jenkins-pod
spec:
containers:
- name: jnlp
image: jenkins/jnlp-slave:3.23-1
imagePullPolicy: IfNotPresent
tty: true
- name: rsync
image: mrsixw/concourse-rsync-resource
imagePullPolicy: IfNotPresent
tty: true
volumeMounts:
- name: nfs
mountPath: /dags
- name: docker
image: docker:17.03
imagePullPolicy: IfNotPresent
command:
- cat
tty: true
volumeMounts:
- name: docker
mountPath: /var/run/docker.sock
volumes:
- name: docker
hostPath:
path: /var/run/docker.sock
- name: nfs
nfs:
server: 10.154.0.3
path: /airflow/dags