在构建屏幕中显示工作区文本文件中的Jenkins内容

时间:2014-05-15 15:49:08

标签: jenkins

我有一个Jenkins作业,它将工件存储为构建后的操作。在这些工件中是一个文本文件,它告诉我们构建了哪个版本的软件。在Jenkins项目中是否有可能以某种方式访问​​此文本文件并在Jenkins构建页面上的某处显示其内容?这样,构建管理器可以立即查看此归档工件包含的软件版本。谢谢!

2 个答案:

答案 0 :(得分:0)

GroovyScript有更高级的方法,但我可以建议这样的事情:

enter image description here

使用 Description Setter 插件。它使用RegEx查看模式的控制台输出(构建日志)并相应地设置描述(如屏幕截图所示)。

如果您没有在控制台日志中打印该版本,则可以使用其中任何一个打印出来 cat filename(Linux)或type filename(Windows)。无需将版本文本文件存储为工件(除非您将其用于其他目的)

要直接回答您的问题,为了将文字添加到实际构建页面,您可以使用 Groovy Postbuild 插件,如下所示:
def workspace = manager.build.getEnvVars()["WORKSPACE"] String fileContents = new File('${workspace}/filename.txt').text manager.createSummary("folder.gif").appendText("${fileContents }")
插件页面有很多例子。

答案 1 :(得分:0)

我收到了修改后的提案。由于您真正想要的是在显示的构建名称和/或描述中包含语义版本控制信息,因此有一种更简单的方法。

首先,我偶然发现了一个插件,可以很好地从Maven或SBT构建过程中提取你的版本 - Semantic Versioning Plugin。这就做了所宣传的内容 - 从POM或其他任何方面提取版本,并将其作为文件和构建过程中的变量包括在内。因此,您可以自由地使用这两者,或者在构建过程中包含文件并按照您的意愿执行操作和/或使用该变量来影响Jenkins中的构建流程。现在,因为这个插件仍然有几个错误,我想指出你现在我自己的这个插件的构建,其中已有修复,可以从here获得。在将所有修复程序合并到官方插件的那一刻我将采用自己的版本...

然后让我们从名字开始。如前所述,最好的方法是使用Build Name Setter plugin。为了使用这两个插件为您的构建设置一个名称,导航到项目的配置并找到一个名为"确定项目的语义版本的选项"在那里,激活它,并使用变量的默认名称或提供自己的名称。当你向下滚动一点名为" Set Build Name"并激活它。默认情况下,您将看到常规构建命名约定 - #${BUILD_NUMBER}。您可以使用该变量以及任何插件提供的任何其他变量,但在此特定情况下,您需要使用上面命名的环境变量,即:

#${BUILD_NUMBER} - ${ENV,var="SEMANTIC_VERSION"}

这会将每个构建的名称设置为更有意义的名称,因此在这种情况下,它可能会导致#76 - 0.0.76-SNAPSHOT。显然,您可以自由地尝试将构建的名称定制为您想要的特定格式。请记住,它可能会破坏您的页面流量,因为名称会比平时更长,因此它会在屏幕左侧推送具有最新版本的表格,这将影响您的仪表板。

现在,为了进一步自定义构建信息,您可能还需要查看Description Setter Plugin。就个人而言,由于我已经开始进一步研究这个案例,我现在使用两者的组合。您可以使用与上面列出的相同的令牌扩展,最大的区别是您需要创建/维护将用于创建描述的文件。您将在此说明中包含的内容仅受Jenkins本身或任何已安装插件发布的所有变量或标记的限制(请查看here)。就个人而言,我列出了从不同地方收集的一些信息,以及Maven在构建过程中创建/提供的一些其他内容。所以它非常方便。

上面提到的两个插件(Build Name Setter和Description Setter)都可以使用其他信息源来构建名称和描述 - 它可以是属性文件等。例如,可以使用Job Exporter Plugin删除属性文件以形式读取有关构建本身的所有可能信息,例如:

${PROPFILE,file="hudsonBuild.properties",property="build.user.name"}

在这种情况下,这将解析为已触发构建的用户的用户名。 同样,可以使用Token Macro插件可见的任何变量。