【问题标题】:Jenkins Job DSL - behaviour conditional on file contentsJenkins Job DSL - 以文件内容为条件的行为
【发布时间】:2016-05-07 05:35:21
【问题描述】:

我继承了一个系统,它使用 Jenkins Job DSL 来为我们所有的项目构建作业,我在配置 Jenkins 方面几乎没有经验,对 Jenkins Job DSL 一点也没有,所以请温柔一点。

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

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

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

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

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

【问题讨论】:

    标签: jenkins jenkins-job-dsl


    【解决方案1】:

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

    从您的问题中不太清楚,但如果您正在谈论从存储库中读取文件以供您正在生成的作业签出,则此功能将无济于事。但是如果文件已经在工作区的某个地方(即它是种子作业签出的文件之一),你会没事的。

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

    为了您继续保持理智,这里是Job DSL API Documentation的链接

    【讨论】:

    • 谢谢,这看起来不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多