首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jenkins从站的PersistentVolumeClaim工作区

jenkins从站的PersistentVolumeClaim工作区
EN

Stack Overflow用户
提问于 2020-04-28 12:37:52
回答 1查看 3.3K关注 0票数 4

我试图通过使用PersistentVolumeClaim将我的工作区保存在kubernetes插件

我创建了PVPVC,并将文件存储在本地磁盘上。这个管道以前运行良好,但是现在不再在本地磁盘上创建工作区了。

这是我的管道。知道为什么不起作用吗?

代码语言:javascript
复制
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 "
                    }
                }
            }
        }
    }
}

现在Jenkins总是像这样挂载卷:

代码语言:javascript
复制
volumeMounts:
 - mountPath: "/home/jenkins/agent"
   name: "workspace-volume"
   readOnly: false
volumes:
  - emptyDir:
      medium: ""
    name: "workspace-volume"

,我的问题是:,如何用我的persistentVolumeClaim覆盖emptyDir的默认值以作为工作区卷?

EN

回答 1

Stack Overflow用户

发布于 2021-01-11 15:54:20

为了帮助以后像我这样遇到这个问题的人,在kubernetes部分中有一个agent属性,它定义了如何处理工作区卷。Jenkins将扩展代理YAML文件包含的任何内容,其中包含工作区的挂载和卷。

因此,要使用现有的持久性卷声明,您可以这样做:

代码语言:javascript
复制
pipeline {
    agent {
        kubernetes {
            yaml podTemplate
            workspaceVolume persistentVolumeClaimWorkspaceVolume(claimName: 'jenkins-slave-pvc', readOnly: false)
        }
    }
...
}

根据您的持久卷是如何设置的,以及您支持什么样的并行构建,您可能需要使用动态持久卷声明,这样每个构建代理都可以获得自己的工作区卷。您可以通过以下方式配置该功能:

代码语言:javascript
复制
pipeline {
    agent {
        kubernetes {
            yaml podTemplate
            workspaceVolume dynamicPVC(accessModes: 'ReadWriteOnce', requestsSize: "10Gi")
        }
    }
...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61480357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档