air*_*ata 6 jenkins kubernetes jenkins-pipeline jenkins-declarative-pipeline jenkins-kubernetes
PersistentVolumeClaim我正在尝试使用kubernetes-plugin来保留我的工作区
我已经创建了文件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 "
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在 Jenkins 总是这样挂载卷:
volumeMounts:
- mountPath: "/home/jenkins/agent"
name: "workspace-volume"
readOnly: false
volumes:
- emptyDir:
medium: ""
name: "workspace-volume"
Run Code Online (Sandbox Code Playgroud)
我的问题是:emptyDir如何用 my覆盖默认值persistentVolumeClaim作为我的工作区卷?
小智 5
为了帮助像我一样后来遇到这个问题的人,kubernetes该agent部分中有一个属性,它定义了如何处理工作区体积。Jenkins 将通过工作区的挂载和卷来扩展代理 YAML 文件包含的任何内容。
因此,要使用现有的持久卷声明,您可以执行以下操作:
pipeline {
agent {
kubernetes {
yaml podTemplate
workspaceVolume persistentVolumeClaimWorkspaceVolume(claimName: 'jenkins-slave-pvc', readOnly: false)
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
根据持久卷的设置方式以及您支持的并行构建类型,您可能希望使用动态持久卷声明,以便每个构建代理获得自己的工作区卷。您可以通过以下方式配置该功能:
pipeline {
agent {
kubernetes {
yaml podTemplate
workspaceVolume dynamicPVC(accessModes: 'ReadWriteOnce', requestsSize: "10Gi")
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5101 次 |
| 最近记录: |