当前位置:  开发笔记 > 运维 > 正文

别名jenkins工件URL

如何解决《别名jenkins工件URL》经验,为你挑选了1个好方法。

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.

如果詹金斯本身不能这样做,也许有一个插件?



1> Slav..:

从来没有见过任何这样的插件,但Jenkins已经内置了类似的功能.

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

在您的情况下,它将是:
http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/*zip*/MyJob-latest.zip
这将获得/artifact/build/带有名称的压缩存档中返回的内容MyJob-latest.zip.请注意,如果该目录中只有该zip文件,则还会返回其他文件.

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

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

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

编辑:

没有某种形式的容器(在这种情况下是拉链),你不能做这样的事情.使用容器,您告诉系统:

获取任何可能的[未确定计数]通配符匹配并放入此容器,然后给我容器.这是合乎逻辑且可能的,因为只有一个容器,无论它是否为空.

但你不能告诉系统:

给我一个特定单个文件的链接,但我不知道有哪个或多少个.系统无法保证您的通配符将匹配一个,多个或不匹配.从逻辑角度来看,这根本不可能.

如果您需要一些脚本自动化,您可以解压缩第一级zip并保留所需的压缩工件.

如果您需要将此链接提供给其他人,则需要一个替代解决方案.

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

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

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有