jenkins - 从文件中获取作业 DSL 脚本时。我如何在 jenkins helm chart jcasc 部分和格式中完成这个?

标签 jenkins kubernetes-helm jcasc

到目前为止我的理解:这是有道理的,我传入一个文件而不是对脚本值进行硬编码

jobs:
  - script: >
      multibranchPipelineJob('configuration-as-code') {
          branchSources {
              git {
                  id = 'configuration-as-code'
                  remote('https://github.com/jenkinsci/configuration-as-code-plugin.git')
              }
          }
      }

jobs:
  - file: ./jobdsl/job.groovy

当前设置: 在我的 jcasc 部分下的 jenkins helm 值文件中,我有以下内容。这很好,它可以与我在这里没有展示的其他配置一起工作(与本次讨论无关)

   JCasC:
      defaultConfig: true
      configScripts:
        pipeline-job: |
          jobs:
            - script: >
                multibranchPipelineJob('testrepo') {
                  branchSources {
                    git {
                      id('testrepo')
                      credentialsId('bitbucketv1')
                      remote('https://bitbucket.org/repo/test.git')
                      includes("master develop")
                      excludes("")
                    }
                  }

问题:

如何将我的代码片段作为文件传递,如“- file: ./jobdsl/job.groovy”。我在我的 jenkins helm 文件夹中创建了一个名为 jobdsl 的文件夹,并在开始时添加了带有 multibranchpipelinejob 代码片段的 job.groovy。但是我收到一条错误消息,指出文件不存在。

我是否需要先创建一个配置映射并将此文件加载到 jenkins 中?或者有没有办法将文件从本地传递到上面我的 helm 图表片段中的 jcasc 脚本?另外,job.groovy 的正确格式是什么?它是否包括 -script: > 部分或仅来自 multibranchpipelinejob 及以下?

最佳答案

不幸的是,我不确定这是否可行。我试图弄清楚同样的事情,但无济于事。但是,我将在此处记录我的步骤,以防万一我遗漏了某个步骤并且有人可以帮助填写。

我正在使用 Jenkins Helm 图表 https://github.com/jenkinsci/helm-charts并在 Minkube 上部署了我的实例。

基于可以设置的可用图表值,我添加了以下内容:

persistence:
enabled: true
accessMode: "ReadWriteOnce"
size: "100Gi"

volumes:
  - name: jacsc-jenkins-jobdsl-pipelines
    configMap:
      name: jacsc-jenkins-jobdsl-pipelines
mounts:
  - mountPath: /var/jenkins_home/jobdsl
    name: jacsc-jenkins-jobdsl-pipelines

这里的想法是,由于所有 CACS 脚本都保存在/var/jenkins_home/cacs_scripts 文件夹中(您可以通过深入了解 helm chart 代码来查看),我也可以将我的 JobDSL 代码安装到 pod 中并引用

这是我用来将我的 CACS 代码添加到 jenkins pod 的配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: jacsc-jenkins-jobs
  namespace: jenkins
  labels:
    "jenkins-jenkins-config": "true"
data:
  jacsc-jenkins-jobs.yaml: |
    jobs:
      - script: >
          folder('Tests')
      - file: ../../../../jobdsl/image-builder.groovy

然而,无济于事。我尝试从映射的配置映射文件以及似乎是 Job DSL 插件的已编译 Java 代码的实际文件的角度来引用该文件。每次都说找不到文件。

根据我对此处使用的 File() 的了解 (https://github.com/jenkinsci/job-dsl-plugin/blob/master/job-dsl-plugin/src/main/groovy/javaposse/jobdsl/plugin/casc/FromFileScriptSource.java),我的假设是这通过作业工作区查找路径,这与作业不同Pod 上的 DSL 代码。

如果有人发现关于此的任何其他内容来证明它确实有效,请告诉!

关于jenkins - 从文件中获取作业 DSL 脚本时。我如何在 jenkins helm chart jcasc 部分和格式中完成这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66891309/

相关文章:

kubernetes - Helm不能从设置文件遍历范围

Jenkins 配置代码为 : programmatically reload configuration from file

jenkins - 将证书作为代码添加到Jenkins配置

maven - Maven、Artifactory 和 Jenkins 环境中各种 Maven 配置文件(jboss、tomcat、glassfish)的不同数据库库名称( Artifact )

Jenkins :disableConcurentBuild 不工作

svn - 在Jenkins Pipeline中构建特定的修订版

visual-studio - 设备的 Ad-Hoc 代码设计在 Studio 中成功,在 Jenkins 中失败

kubernetes-helm - Helm 模板 : how do i assign the result of a template to a variable

apache-spark - Kafka NodePort服务在群集外部无法访问