Yakın zamanda kubernetes aracısı ile komut dosyasından bildirime geçiş yaptım. Temmuz '18'e kadar, bildirimsel ardışık düzenler kubernetes podlarını tam olarak belirtme yeteneğine sahip değildi. Ancak yamlFile
adımın eklenmesiyle artık deponuzdaki bir yaml dosyasından pod şablonunuzu okuyabilirsiniz.
Bu daha sonra, pod şablonunuzu doğrulamak için vscode'un harika kubernetes eklentisini kullanmanıza, ardından bunu Jenkins dosyanıza okumanıza ve kapları istediğiniz adımlarla kullanmanıza olanak tanır.
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
Yukarıda belirtildiği gibi komut dosyası blokları ekleyebilirsiniz. Özel jnlp ve docker içeren örnek pod şablonu.
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