Рабочее пространство PersistentVolumeClaim для подчиненного jenkins
Я пытаюсь оставить свое рабочее место в PersistentVolumeClaim
с помощью плагина kubernetes
Я создал PV
а также PVC
и я сохранил свои файлы на локальном диске. Этот конвейер и раньше работал нормально, но теперь рабочие области больше не создаются на локальном диске.
Вот мой конвейер. Любая идея, почему не работает?
def podTemplate = """
apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven
command:
- sleep
args:
- infinity
volumeMounts:
- name: workspace-volume
mountPath: /home/jenkins/agent
workingDir: "/home/jenkins/agent"
volumes:
- name: "workspace-volume"
persistentVolumeClaim:
claimName: "jenkins-slave-pvc"
readOnly: false
"""
pipeline {
agent none
stages {
stage ('maven') {
agent {
kubernetes {
yaml podTemplate
defaultContainer 'maven'
}
}
stages {
stage('Nested 1') {
steps {
sh "touch Nested1 && mvn -version"
}
}
stage('Nested 2') {
steps {
sh "mvn -version 2 && touch Nested2 "
}
}
}
}
}
}
Теперь Дженкинс всегда монтирует том следующим образом:
volumeMounts:
- mountPath: "/home/jenkins/agent"
name: "workspace-volume"
readOnly: false
volumes:
- emptyDir:
medium: ""
name: "workspace-volume"
Мой вопрос: как я могу перезаписать значение по умолчаниюemptyDir
со мной persistentVolumeClaim
быть моим рабочим пространством?
1 ответ
Чтобы помочь всем, кто сталкивается с этим вопросом намного позже, как и я, есть свойство на
kubernetes
в
agent
раздел, который определяет, как обрабатывается объем рабочей области. Jenkins расширит все, что содержит файл YAML вашего агента, с помощью монтирования и тома для рабочей области.
Таким образом, чтобы использовать существующую претензию на постоянный том, вы должны сделать следующее:
pipeline {
agent {
kubernetes {
yaml podTemplate
workspaceVolume persistentVolumeClaimWorkspaceVolume(claimName: 'jenkins-slave-pvc', readOnly: false)
}
}
...
}
В зависимости от того, как настроен ваш постоянный том и какие параллельные сборки вы поддерживаете, вы можете вместо этого использовать динамические утверждения постоянного тома, чтобы каждый агент сборки получал свой собственный том рабочей области. Вы можете настроить эту функциональность с помощью:
pipeline {
agent {
kubernetes {
yaml podTemplate
workspaceVolume dynamicPVC(accessModes: 'ReadWriteOnce', requestsSize: "10Gi")
}
}
...
}