在 Jenkins 配置中基于每个文件传递变量作为代码作业 DSL
Pass Variable on a Per-File Basis in Jenkins Configuration as Code Job DSL
https://github.com/jenkinsci/job-dsl-plugin/wiki/JCasC 提供了 Jenkins 配置即代码 (CasC) 语法中引用的单独 groovy 文件的以下示例。
jobs:
- providedEnv:
SUPERHERO: 'Midnighter'
- file: ./jobdsl/job.groovy
//job.groovy
job('awesome-job') {
description("favorite job of ${SUPERHERO}")
}
我正在寻找一种方法来定义一些非常相似的工作,这些工作只有一两个值不同。在上面的示例中,SUPERHERO
变量看起来是一个全局变量,但我需要一种方法来重用相同的 groovy 包含每个包含变量。
伪代码示例:
jobs:
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Superman'
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Batman'
这样的结构存在吗?
这似乎有效:
jobs:
- providedEnv:
SUPERHERO: 'Batman'
- file: ./jobdsl/job.groovy
- providedEnv:
SUPERHERO: 'Superman'
- file: ./jobdsl/job.groovy
但我不知道我是否在利用脆弱的、未记录的行为。
我希望看到环境变量与 file
引用的显式关联;像这样:
jobs:
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Batman'
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Superman'
...但是这个(猜测)语法不起作用。 (詹金斯开始了,但没有工作。)
这样做怎么样?
jobs:
- providedEnv:
JOB_NAMES: 'Batman,Superman'
- file: ./jobdsl/jobs.groovy
然后您在 jobs.groovy
中有一个循环将 JOB_NAMES 拆分成一个列表。
https://github.com/jenkinsci/job-dsl-plugin/wiki/JCasC 提供了 Jenkins 配置即代码 (CasC) 语法中引用的单独 groovy 文件的以下示例。
jobs:
- providedEnv:
SUPERHERO: 'Midnighter'
- file: ./jobdsl/job.groovy
//job.groovy
job('awesome-job') {
description("favorite job of ${SUPERHERO}")
}
我正在寻找一种方法来定义一些非常相似的工作,这些工作只有一两个值不同。在上面的示例中,SUPERHERO
变量看起来是一个全局变量,但我需要一种方法来重用相同的 groovy 包含每个包含变量。
伪代码示例:
jobs:
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Superman'
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Batman'
这样的结构存在吗?
这似乎有效:
jobs:
- providedEnv:
SUPERHERO: 'Batman'
- file: ./jobdsl/job.groovy
- providedEnv:
SUPERHERO: 'Superman'
- file: ./jobdsl/job.groovy
但我不知道我是否在利用脆弱的、未记录的行为。
我希望看到环境变量与 file
引用的显式关联;像这样:
jobs:
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Batman'
- file: ./jobdsl/job.groovy
providedEnv:
SUPERHERO: 'Superman'
...但是这个(猜测)语法不起作用。 (詹金斯开始了,但没有工作。)
这样做怎么样?
jobs:
- providedEnv:
JOB_NAMES: 'Batman,Superman'
- file: ./jobdsl/jobs.groovy
然后您在 jobs.groovy
中有一个循环将 JOB_NAMES 拆分成一个列表。