J'ai fait le switch déclarative récemment de script avec le kubernetes de l'agent. Jusqu'en juillet '18 déclarative pipelines n'ont pas la possibilité de spécifier des kubernetes gousses. Cependant, avec l'ajout de l' yamlFile
étape, vous pouvez désormais lire votre pod modèle à partir d'un fichier yaml dans votre pension.
Cela vous permet ensuite d'utiliser, par exemple, vscode du grand kubernetes plugin pour valider votre pod modèle, puis de le lire dans votre Jenkinsfile et l'utilisation des conteneurs dans les étapes que vous s'il vous plaît.
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
Comme mentionné ci-dessus, vous pouvez ajouter des blocs de script. Exemple gousse de modèle personnalisé avec jnlp et 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