我目前有一个包含文本文件的 git 存储库。我想将其内容加载为 jenkins 作业的构建参数。 一种方法是在 Jenkins 多行字符串参数中手动复制此文件的内容。但是,由于内容已经在 git 中,我想保持耦合。
不确定,是否可以使用 Jenkins? 我正在使用 Jenkins Job DSL 来生成作业。
答案 0 :(得分:1)
EDIT :您可以在以下答案 Jenkins dynamic declarative pipeline parameters
中找到几种不同的实现方式我认为您可以通过以下方式实现它(脚本化管道)。
node {
stage("read file") {
sh('echo -n "some text" > afile.txt')
def fileContent = readFile('afile.txt')
properties([
parameters([
string(name: 'FILE_CONTENT', defaultValue: fileContent)
])
])
}
stage("Display properties") {
echo("${params.FILE_CONTENT}")
}
}
第一次执行时没有参数选择。第二次,您可以选择使用参数构建,内容将是您文件的内容。
这种方法的坏处是它总是与之前的执行同步,即当您在更改文件内容的提交上开始构建时,它将使用文件内容预填充参数为每次构建的最后一次执行。
我所知道的唯一方法是将您的管道拆分为两个管道。第一个读取文件的内容,然后使用 build
步骤将文件内容作为构建参数触发第二个。
如果您找到更好的方法,请告诉我们。
答案 1 :(得分:0)
为什么不让 jenkins 将 repo 作为 Job 的一部分提取,然后解析参数的内容(比如 json,例如来自 repo 中的文件),然后继续使用这些参数执行?