Jenkins Job DSL - 以文件内容为条件的行为

时间:2016-05-05 10:29:30

标签: jenkins jenkins-job-dsl

我继承了一个使用Jenkins Job DSL为我们所有项目构建作业的系统,我几乎没有配置Jenkins的经验,也没有使用Jenkins Job DSL,所以请保持温和。

其中一些项目是Gradle项目。有一个函数createGradleJob()可以创建gradle作业。在此函数中,我们基于项目的某些功能,以字符串形式为作业构建任务列表。例如如果它是从主分支构建的,我们会附加“发布”任务。所有这些条件任务当前都是根据项目分支名称,或项目仓库中某些文件的存在或缺失而附加的。

我现在想要在这个任务列表中添加一个新任务,条件是某些文件的内容。特别是如果在项目build.gradle文件中检测到某些关键字,则需要将某些任务附加到任务列表。

那么,是否有一种方法可以让Jenkins Job DSL检查文件的内容并将其用作条件表达式?

我发现我可以使用 shell 函数执行任意shell命令,所以我认为我只能grep该文件,但我找不到这个函数的文档,所以我'我不清楚如何能够访问命令的输出,以便在条件表达式中使用它们。

我找到了 textFinder 函数,但这似乎只允许您因查找或找不到文本而导致构建失败(或标记为不稳定),而不是使用结果作为条件表达式。

1 个答案:

答案 0 :(得分:0)

听起来你想要readFileFromWorkspace。它以字符串形式返回文件的内容。只需读取您的文件并使用Groovy和/或Java字符串utils根据需要解析字符串。

你的问题并不是很清楚,但是如果你正在谈论从你正在生成的作业中检出的回购文件 ,这个功能将无济于事。但是如果文件已经在工作区中的某个位置(即它是种子作业检出的文件之一),那么你会没事的。

您找到的shell命令会为正在生成的作业添加“执行Shell脚本”构建步骤。它实际上并没有在那里执行脚本,然后,它只是将参数的内容逐字复制到构建步骤中,准备在Jenkins运行作业时执行。

为了您的持续理智,这里有Job DSL API Documentation

的链接