Saya beralih ke deklaratif baru-baru ini dari skrip dengan agen kubernetes. Sampai pipeline deklaratif Juli '18 tidak memiliki kemampuan penuh untuk menentukan pod kubernetes. Namun dengan tambahan yamlFile
langkah tersebut Anda sekarang dapat membaca templat pod Anda dari file yaml di repo Anda.
Ini kemudian memungkinkan Anda menggunakan misalnya plugin kubernetes besar vscode untuk memvalidasi template pod Anda, kemudian membacanya ke Jenkinsfile Anda dan menggunakan kontainer dalam langkah-langkah sesuka Anda.
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
Seperti disebutkan di atas, Anda dapat menambahkan blok skrip. Contoh template pod dengan custom jnlp dan 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