Gần đây, tôi đã chuyển sang khai báo từ tập lệnh với tác nhân kubernetes. Cho đến tháng 7 năm 1818, các đường ống khai báo không có đầy đủ khả năng chỉ định các nhóm kubernetes. Tuy nhiên, với việc bổ sung yamlFile
bước này, giờ đây bạn có thể đọc mẫu nhóm của mình từ tệp yaml trong repo của mình.
Điều này sau đó cho phép bạn sử dụng plugin kubernetes tuyệt vời của vscode để xác thực mẫu nhóm của bạn, sau đó đọc nó vào tệp Jenkins của bạn và sử dụng các vùng chứa theo các bước tùy ý.
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
Như đã đề cập ở trên, bạn có thể thêm các khối script. Mẫu nhóm ví dụ với jnlp và docker tùy chỉnh.
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