【问题标题】:keep the same jenkins agent pod for the main and underneath pipelines为主管道和底层管道保留相同的 jenkins 代理 pod
【发布时间】:2021-02-11 22:10:37
【问题描述】:

我正在使用 jenkins 和 kubernetes, 每次我触发一个作业时,都会创建一个新的入站代理 pod 来执行该作业,到目前为止一切顺利。

但是,管道下方的管道是一个问题:

pipeline {
    agent { label 'kubernetePod' }

  stages {
    
    stage('Building') {
        steps{
            build job: 'Build', parameters: []
        }
    }
    stage('Testing') {
        steps{
            build job: 'Test', parameters: []
         }
    }    
}

在这种情况下,我们有三个管道

  • “主”管道具有“构建”阶段和“测试”阶段
  • “构建”管道
  • “测试”管道

于是创建了一个pod 'A'来执行主管道,

然后创建一个 pod 'B' 来检查和构建解决方案

最后创建了一个 pod 'C' 来执行解决方案测试但它崩溃了,因为解决方案包含在 pod 'B' .

我的问题是如何保留 pod 'A' 以执行下面的管道!

感谢您的帮助。

最好的问候

【问题讨论】:

    标签: kubernetes jenkins-pipeline kubernetes-pod


    【解决方案1】:

    我认为 Kubernetes 从站被设计为无状态的,并且是一次性使用的。

    我认为在某些情况下可能会有所帮助的唯一解决方法是使用idleMinutes 来设置Pod 应处于Running 状态的时间。
    在您的情况下,如果您使用具有适当值的idleMinutes,您将能够使用相同的Pod(来自您的示例的podB)运行BuildTest 作业。


    我创建了一个示例来说明它是如何工作的。

    这是管道sn-p:

    pipeline {
    
      agent { kubernetes { 
                label 'test'
                idleMinutes "60"
            }}
    
      stages {
        
        stage('Building') {
            steps{
                build job: 'Build'
            }
        }
        stage('Testing') {
            steps{
                build job: 'Test'
        }    
    }
    }
    }
    

    这是Build 工作:

    node('test') {
        stage('Run shell') {
            sh 'touch /home/jenkins/test_file'
            sh 'echo 123abc > /home/jenkins/test_file'
        }
    }
    

    这是 Test 作业:
    注意:此作业读取由 Build 作业创建的文件。

    node('test') {
        stage('Run shell') {
            sh 'cat /home/jenkins/test_file'
        }
    }
    

    因此,我们可以看到创建了两个 Pod(您的示例中的 podApodB),它们仍处于 Running 状态:

    # kubectl get pods
    NAME               READY   STATUS    RESTARTS   AGE
    test-99sfv-7fhw2   1/1     Running   0          4m45s
    test-99sfv-vth3j   1/1     Running   0          4m25s
    

    另外在test-99sfv-vth3jPod 中还有test_fileBuild 作业创建:

    # kubectl exec test-99sfv-vth3j -- cat /home/jenkins/test_file
    123abc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      相关资源
      最近更新 更多