gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:48:09 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com