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。
MyJob-latest.zip
MyJob-v1.0.1.zip
如果詹金斯(Jenkins)本身无法做到这一点,那么也许有一个插件?
从未见过任何此类插件,但是Jenkins已经内置了类似的功能。
您可以/*zip*/filename.zip在工件路径中使用filename任何选择的位置。它将获取所有找到的工件,并将它们下载到一个zip文件中(如果您的工件已经是一个zip文件,则最终可能会在zip文件中包含一个zip文件)
/*zip*/filename.zip
filename
在您的情况下,将是: http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/*zip*/MyJob- latest.zip 这将使您获得/artifact/build/名称为的压缩存档中返回的内容MyJob- latest.zip。请注意,如果该目录中不仅有该zip文件,还将返回其他文件。
http://myjenkins.local/job/MyJob/lastSuccessfulBuild/artifact/build/*zip*/MyJob- latest.zip
/artifact/build/
MyJob- latest.zip
您可以在路径中使用通配符。一个*用于常规通配符,一个**用于跳过任意数量的先前目录。
*
**
例如,要获取以开头MyJob,以结束的任何文件.zip,并在任何工件目录中查找它,可以使用:
MyJob
.zip
/lastSuccessfulBuild/artifact/**/MyJob*.zip/*zip*/MyJob-latest.zip
编辑:
没有 某种 形式的容器(在这种情况下为zip),您将无法执行此类操作。使用该容器,您正在告诉系统:
但是您不能告诉系统:
如果您需要它来实现某些脚本自动化,则可以解压缩第一层zip,并保留所需的压缩工件。
如果需要将此链接提供给其他人,则需要替代解决方案。
备选方案1: 构建完成后,执行构建后步骤,该步骤将使用您的工件,并将其重命名为MyJob- latest.zip,但是您将丢失文件名中的版本控制。您还可以选择复制而不是重命名,但是最终会导致存储这些工件的空间增加一倍。
备选方案2(推荐): 作为构建后的操作,请将工件上载到中央存储库。它可以是Artifactory,甚至是普通的SVN。上载时,它将被重命名MyJob- latest.zip,而上一个将被覆盖。这样,您就有了一个静态链接,该链接将始终具有来自lastSuccessfulBuild
lastSuccessfulBuild