如何自定义Jenkins构建名称?

如何自定义Jenkins构建名称?,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,当我在Jenkins中运行一个作业时,每个构建都有一个名称,显示在构建历史的UI中,基本上是当前日期和时间 我希望能够在那里输入构建参数,这样我就可以在构建历史中看到已经构建了哪些分支以及何时构建 我已经搜索了很多插件来实现这一点,但是没有找到任何插件。有吗?听起来像 但如果您正在使用,您可以这样做: currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}" Built with parameter MYPARAM: ${E

当我在Jenkins中运行一个作业时,每个构建都有一个名称,显示在构建历史的UI中,基本上是当前日期和时间

我希望能够在那里输入构建参数,这样我就可以在构建历史中看到已经构建了哪些分支以及何时构建

我已经搜索了很多插件来实现这一点,但是没有找到任何插件。有吗?

听起来像

但如果您正在使用,您可以这样做:

currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}"
Built with parameter MYPARAM: ${ENV, var="MYPARAM"}

[回复帕特里斯·M.的上述评论,只是我没有足够的声誉发表评论]:

该插件可以表达多种变量,包括环境变量,当与结合使用时。此外,构建参数也可用作环境变量;因此,例如,如果您的构建有一个参数“MYPARAM”,那么您只需在构建名称中使用它(假设您安装了令牌宏插件),如下所示:

currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}"
Built with parameter MYPARAM: ${ENV, var="MYPARAM"}

还可以使用“手动”设置生成名称。只需遵循以下步骤:

  • 生成新的生成名称。如果要在单独的作业步骤中执行此操作,则可能需要将其保存到属性文件中,例如使用名称“newVersion”并使用执行“injectenvironment variables”步骤
  • 下一步-运行系统Groovy脚本:

    def build = Thread.currentThread().executable
    assert build
    def newBuildName = build.getEnvironment().get('newVersion')
    try {
        if (newBuildName) build.displayName = newBuildName
        println "Build display name is set to ${newBuildName}"
    } catch (MissingPropertyException e) {}
    

  • 如您所见,我们在这里使用
    build.displayName
    变量。它的值是Jenkins中可见的构建名称。

    此插件“”可能会帮助您。作为构建名称的来源,您可以使用磁盘上的文本文件或环境变量,也可以将插件与此类插件组合使用,如

    警告:这仅适用于*nix环境。对于单个shell步骤,您可以按以下方式执行:

    /usr/bin/env JOB_NAME="Old JOB_NAME: ${JOB_NAME}" <command>
    
    /usr/bin/env JOB_NAME=“旧作业名称:${JOB_NAME}”
    

    假设您的项目名为“myproject”,则会将JOB_NAME环境变量视为“Old JOB_NAME:myproject”

    来修改默认的显示名称,请使用
    currentBuild.displayName=“#${BUILD_NUMBER},branch${branch}”
    来修改默认的显示名称,但此插件无法表示构建参数,或者一般来说,可以设置脚本环境变量。但它可以从工作区读取主机环境变量(例如,${HOSTNAME}')和属性文件。因此,一个不太友好的解决方法是将shell脚本定义为构建步骤,并将参数“name=values”写入任意属性文件(例如:echo“MY_PARAM=${MY_PARAM}”>params.properties。唯一的问题是构建名称设置器插件过早地对表达式求值一次,最后只在最后求值(因此构建必须结束才能看到结果)。有人找到更好的替代方法吗?我要设置的名称可以很容易地从现有属性计算出来(通过一些非常简单的字符串操作)但是,除了输出到属性文件然后注入的shell脚本之外,我看不到任何方法可以做到这一点。主要的陷阱是作业可能会在进入注入步骤之前失败!@Constantinos我更新了我的答案,以涵盖使用管道作业,这使得这种方法比自由式作业更容易。非常酷。作为“用户”在您的Groovy脚本上有“管理员批准”的减速。使用Groovy Postbuild插件,语法有点不同。例如:
    manager.build.displayName=“#”+manager.build.number+”+manager.envVars[“desc_var”];
    ——对于描述:
    manager.build.description=“Groovy Postbuild:”+manager.build.number
    考虑到build Name Setter plugin的依赖性,我认为这是我们在不太头疼的情况下可以实现的最好结果术语重载:当前日期和时间显示在“Description”字段中,而不是“Name”默认为递增数字。请参阅插件或管道DSL的
    currentBuild.description
    属性。对于Jenkins声明性管道,可以添加
    script{currentBuild.displayName=${VARIABLE}}
    来更改生成名称。