当从一个文件中获取作业DSL脚本时,我如何在jenkins helm chart jcasc节和格式中完成此操作?

pcww981p  于 2022-12-26  发布在  Jenkins
关注(0)|答案(1)|浏览(160)
    • 我目前所理解的:**这是有意义的,我传入了一个文件,而不是硬编码脚本值
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 values文件中,我有以下内容。这很好,它可以与我在这里没有展示的其他配置一起工作(与本次讨论无关)
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。但是我收到一个错误消息,说文件不存在。
我是否需要创建一个配置Map并首先将此文件加载到jenkins中?或者是否有一种方法可以将文件从本地传递到上面我的helm图表片段中的jcasc脚本?另外,job.groovy的正确格式是什么?它是否包括-script:〉部分还是仅从多分支流水线作业开始向下?

4urapxun

4urapxun1#

不幸的是,我不确定这是否可能。我试图找出同样的事情,但无济于事。然而,我将在这里记录我的步骤,以防我遗漏了一个步骤,有人可以帮助填补。
我使用的是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

然而,没有用。我尝试从我Map的配置Map文件的Angular 引用该文件,以及从实际文件(* 似乎 * 是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上的Job DSL代码不同。
如果有人发现关于这件事的其他任何东西来证明它确实有效,请告诉!

相关问题