繁体   English   中英

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

[英]Jenkins Job DSL - behaviour conditional on file contents

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

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

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

那么, Jenkins Job DSL中有没有办法检查文件的内容并将其用作条件表达式?

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

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

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

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

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

为了您的持续理智,这里是Job DSL API文档的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM