【问题标题】:Jenkins helm chart - job DSL issueJenkins 掌舵图 - 工作 DSL 问题
【发布时间】:2021-10-21 11:39:22
【问题描述】:

我在 Jenkins UI 中创建了一个 PipelineJob,它调用了另外 2 个 Jenkins 作业:

pipeline {
    agent any 
    stages {
        stage("Trigger disable script approval") {
            steps {
                script{
                    build job: 'Tools/Disable_Script_Approval'
                }
            }
        }
        stage("Trigger Jobs loading into Jenkins") {
            steps {
                script{
                    build job: 'Tools/Seed_Job_Executor'
                }
            }
        }
    }
}

然后,我使用 xml-job-to-job-dsl 插件来获取 DSL 中的作业语法:

pipelineJob("testLior") {
    description()
    keepDependencies(false)
    definition {
        cpsScm {
"""pipeline {
    agent any 
    stages {
        stage("Trigger disable script approval") {
            steps {
                script{
                    build job: 'Tools/Disable_Script_Approval'
                }
            }
        }
        stage("Trigger Jobs loading into Jenkins") {
            steps {
                script{
                    build job: 'Tools/Seed_Job_Executor'
                }
            }
        }
    }
}"""        }
    }
    disabled(false)
    configure {
        it / 'properties' / 'com.sonyericsson.rebuild.RebuildSettings' {
            'autoRebuild'('false')
            'rebuildDisabled'('false')
        }
    }
}

我采用了上面的代码,并尝试在 JCasC 配置中使用(我们在 EKS 之上运行带有 helm chart 的 Jenkins),并创建了这个值文件:

controller:
  JCasC:
    configScripts:
      casc-jobs: |
        jobs:
        - script: >
          pipelineJob('DSL_Seed_Job') {
            definition {
              cpsScm {
                '''pipeline {
                    agent any 
                    stages {
                        stage('Trigger disable script approval') {
                            steps {
                                script{
                                    build job: 'Tools/Disable_Script_Approval'
                                }
                            }
                        }
                        stage('Trigger Jobs loading into Jenkins') {
                            steps {
                                script{
                                    build job: 'Tools/Seed_Job_Executor'
                                }
                            }
                        }
                    }
                }'''    
              }
            }
          }
...
...

所以,一旦我运行 helm upgrade,我看到 Jenkins pod 无法读取 JCasC 作业配置,并且出现以下错误消息:

2021-10-21 11:04:37.178+0000 [id=22]    SEVERE  hudson.util.BootFailure#publish: Failed to initialize Jenkins
while scanning a simple key
 in /var/jenkins_home/casc_configs/casc-jobs.yaml, line 3, column 3:
      pipelineJob('DSL_Seed_Job') {
      ^
could not find expected ':'
 in /var/jenkins_home/casc_configs/casc-jobs.yaml, line 12, column 38:
     ...                        build job: 'Tools/Disable_Script_Approval'

此错误的原因可能是什么?我从 xml-job-to-dsl-job Jenkins 插件中获得了 DSL 语法,所以我不明白我在这里缺少什么。

提前致谢,
利奥

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-job-dsl jcasc


    【解决方案1】:

    您现在可能已经想通了,但在我看来它就像一个 yaml 缩进问题,我认为以“pipelineJob”开头的块应该像这样缩进:

    jobs:
    - script: >
        pipelineJob('DSL_Seed_Job') {
        ...
        }
    

    【讨论】:

    • 您好实际上,我没有设法让它工作。我将对其进行测试并更新它是否有效。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 2021-06-13
    • 2021-08-25
    • 2021-03-11
    • 2018-07-18
    • 2017-04-08
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多