别名jenkins工件URL

别名jenkins工件URL,jenkins,Jenkins,Jenkins工件URL允许抽象“最后一次成功构建”,因此 http://myjenkins.local/job/MyJob/38/artifact/build/MyJob-v1.0.1.zip 我们可以说 http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/MyJob-v1.0.1.zip 有可能进一步抽象这一点吗?我的工件在其文件名中有其版本号,文件名可以在不同的版本中更改。理想情况下,我希望有一个类似以

Jenkins工件URL允许抽象“最后一次成功构建”,因此

http://myjenkins.local/job/MyJob/38/artifact/build/MyJob-v1.0.1.zip
我们可以说

http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/MyJob-v1.0.1.zip
有可能进一步抽象这一点吗?我的工件在其文件名中有其版本号,文件名可以在不同的版本中更改。理想情况下,我希望有一个类似以下内容的“别名”URL:

http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/MyJob-latest.zip
MyJob-latest.zip
随后将解析为
MyJob-v1.0.1.zip


如果Jenkins本身不能做到这一点,也许有一个插件?

从未见过这样的插件,但Jenkins已经内置了类似的功能

您可以在工件路径中使用
/*zip*/filename.zip
,其中
filename
是您选择的任何内容。它将获取所有找到的工件,并将它们下载到zipfile中(如果您的工件已经是一个zip文件,您可能会在zip中找到一个zip)

在您的情况下,它将是:
http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/*zip*/MyJob-latest.zip

这将获得压缩存档中返回的名为MyJob latest.zip的
/artifact/build/
的内容。请注意,如果您在该目录中有不止一个zip文件,其他文件也将返回

可以在路径中使用通配符。一个
***
用于常规通配符,一个双
***
用于跳过前面任意数量的目录

例如,要获取以
MyJob
开头、以
.zip
结尾的任何文件,并在任何工件目录中查找该文件,您可以使用:

/lastsucessfulbuild/artifact/**/MyJob*.zip/*zip*/MyJob-latest.zip

编辑:

如果没有某种形式的容器(在本例中是拉链),就无法完成类似的操作。对于容器,您告诉系统:

  • 获取任何可能的[Undeminated count]通配符匹配并放入此容器,然后将容器给我。这是合乎逻辑和可能的,因为只有一个容器,不管它是否为空
但您无法告诉系统:

  • 给我一个特定单个文件的链接,但我不知道是哪一个或有多少个。系统无法保证您的通配符将匹配一个、多个或无。从逻辑的角度来看,这根本是不可能的
如果您需要它来实现一些脚本自动化,那么您可以解压缩第一级zip,并且仍然保留所需的压缩工件

如果您需要向其他人提供此链接,则需要其他解决方案

备选方案1:
构建完成后,执行构建后步骤,该步骤将获取您的工件,并将其重命名为
MyJob latest.zip
,但您将丢失文件名中的版本控制。您也可以选择复制而不是重命名,但最终将使用两倍的空间来存储这些工件

备选方案2(推荐):
作为构建后操作,将工件上载到中央存储库。它可以是人工的,甚至是普通的SVN。当您上传它时,它将被重命名为MyJob latest.zip,而上一个将被覆盖。这样,您就有了一个静态链接,它将始终包含来自
lastSuccessfulBuild

的最新工件。实际上,有一个插件可以为您运行的构建分配别名,我发现它非常方便:

例如,您可以使用它以您自己的版本号的形式为构建分配别名,而不是(或者更确切地说是附加)为内部Jenkins分配的构建号。 我发现将它与(或您最喜欢的变量)结合使用通常是最实用的:您可以将一个带有值的env变量(例如MY_VAR=xyz)导出到目标版本或名字对象,然后在“令牌宏别名”中使用
${env,VAR=“myvar”}
插件在作业配置中提供的配置

如果需要,还可以使用它以“LastSuccessful”的形式分配别名,这样可以区分不同类型的成功(或其他状态)生成


等待你的更多!您还可以将
/*zip*/
技巧与别名设置器结合使用

问题是工件名称是
MyJob-v1.1.0.zip
。使用
MyJob-*.zip
似乎不起作用:(您的
构建
目录中是否确实有多个文件?如果没有其他文件,我提供的第一行将正常工作。当您导航到
/artifact
时,您将看到顶部有一个输入字段的页面。键入
***.zip
并按enter键。这是否为您提供了所需的一个文件?实际上是b。)文件的取消选中;MyJob-v1.1.0.zip只是一个例子。
/artifact/**/MyJob*.zip
实际上在某种程度上是有效的。它显示了一个网页,其中包含通过表达式过滤的工件,但您必须单击工件链接。我想知道是否有办法使用此表达式语法(**,*)直接获取工件URL?