jenkins - 事件选择参数中的通用 Groovy 脚本

标签 jenkins shared-libraries jenkins-groovy

我有一个常规脚本,对许多作业来说都是通用的——它们都将包含一个 Active Choices Reactive Parameter。我不想将同一个脚本重复数十次,而是将其放入(库 | ??) 一次,并在每个作业中引用它。

该脚本适用于我粘贴它的任何作业。只需要知道是否可以将它放到一个地方并在所有作业中共享。更新一次,更新所有作业。

import jenkins.model.Jenkins;

ArrayList<String> res = new ArrayList<String>();
def requiredLabels = [new hudson.model.labels.LabelAtom ("Product")];
requiredLabels.add(new hudson.model.labels.LabelAtom(ClientName));

Jenkins.instance.computers.each {
        if (it.assignedLabels.containsAll(requiredLabels)) {
            res.add(it.displayName);    
        }
}

return res;

最佳答案

注意:只有当您有权访问您的 Jenkins 盒子时,这才有效。我还没有尝试通过添加到 jenkins 主页的路径来做到这一点

你可以使用这个:

  1. 将您的所有功能制作成常规文件。例如将调用它:activeChoiceParams.groovy
  2. 通过以下方式将该文件转换为 jar:jar cvf <jar filename> <groovy file> .例如:jar cvf activeChoiceParams.jar activeChoiceParams.groovy
  3. 将你的 jar 文件移动到/packages/lib/ext
  4. 重启 Jenkins
  5. 在您的主动选择中使用 groovy 脚本(例如>:
import activeChoiceParams

return <function name>()

所有函数都必须返回一个列表或映射

关于jenkins - 事件选择参数中的通用 Groovy 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898763/

相关文章:

node.js - 编写 Jenkins 管道共享库以发布到 Nexus NPM 存储库

jenkins - 如果阶段设置构建失败/不稳定状态,如何退出 Jenkins 管道?

continuous-integration - 在步骤中找不到这样的 DSL 方法 'steps'

c++ - 我可以创建一个链接另一个库但不依赖于它的包含的 C++ 库吗?

google-apps-script - 找到一种方法来获取使用的库版本?

c++ - 在多个共享库中静态库成员的多重初始化

jenkins-groovy - 如何读取 Jenkins 旧构建注入(inject)的环境变量

jenkins - 标记 Jenkins 构建成功,以防输入超时? (声明式管道)

grails - Cloudbees Jenkins构建针对Grails 2.2.2应用程序失败

function - Jenkins 将构建步骤作为函数发布