避免在发布版本结束时部署工件

时间:2013-08-09 16:22:39

标签: jenkins artifactory

我在詹金斯有一个maven工作。通常在构建结束时,工件将通过jenkins post构建操作部署到artifactory。 但是,如果我发布版本,在这种情况下我会从jenkins收到错误。 那么,是否有可能避免在发布版本结束时部署工件。

让我确切地说明错误。 maven的目标是'干净安装'。我需要通过“正常”工作部署到工件的post操作。如果我通过M2 Release Plugin发布这个工件,则M2 Release Plugin本身将部署相关工件。但是在作业结束时,post动作尝试使用旧的SNAPSHOT版本部署工件,这是神器不允许的。

5 个答案:

答案 0 :(得分:4)

Jenkins M2发布插件(使用Maven的maven-release-plugin)。如果您已创建Maven作业(而不是自由样式),那么在作业配置的M2发布部分中,您将看到目标是:

-Dresume=false release:prepare release:perform 

如果您使用以下M2发布插件替换它,则不会调用由发布启动的部署目标:默认情况下执行目标。

-Dresume=false release:prepare release:perform -Darguments="-Dmaven.deploy.skip=true"

在我的情况下,我不希望工件在发布后立即转到Artifactory:执行和发布:准备目标已完成,因此上述帮助。但是,即使詹金斯的工作有一个Post Build操作,并且#34; Deploy to Artifactory"无论是快照还是发布存储库(取决于您所拥有的构建类型,即自动/手动运行构建作业或运行Perform Maven Release),它从未调用过后构建操作。

这在某种意义上说是好的,现在我可以在环境中使用生成的发布工件调用部署,如果部署/某些IT测试成功,那么我可以将工件上传到Artifactory。如果您的部署依赖于从Artifactory / Nexus获取新工件(即部署脚本逻辑中的某个位置),那么下行就是这样,那么在将工件从一个作业复制到另一个子作业之前,您无法工作。

除此之外,maven部署目标需要settings.xml或pom.xml中的有效/设置,其中您为上述每个部分指定的部分(在部分下定义)必须与设置中定义的部分的值匹配.XML / pom.xml中。

可以定义/设置section的值以使用非快速存储库,该存储库的顺序(用于工件解析)比快照存储库更高,即使用libs-alpha-local或libs-stage-local然后让maven部署目标将工件部署到Artifactory / Nexus。

稍后,在成功部署到更高环境(如QA / PRE等)后,您可以将工件从alpha / stage移动到libs-release-local。

IS_M2RELEASEBUILD M2 Release插件附带的布尔变量可以在条件步骤中使用,可以在这里或那里进行部署或根本不进行部署。

答案 1 :(得分:2)

在“Maven发布版本”的配置中,您可以在高级模式中设置“发布环境变量”(默认为IS_M2RELEASEBUILD)。稍后在post-bild-action'发布工件'中,您可以检查是否已设置此环境变量,然后跳过部署。

答案 2 :(得分:0)

我想你可能想为你的发布版本创建一个单独的jenkins工作。并且在post构建操作下运行不同的maven命令集只是为了打包artificat而不是将它安装到artifactory。如果其他应用程序依赖于您不想发布的工件,那就说了。这可能会导致版本问题。

答案 3 :(得分:0)

你应该看一下Artifactory Jenkins插件。它部署有错误。它内置了发布功能。 3.它将为您提供独特的buildInfo功能,以便在Artifactory https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin

中保存构件信息更加严格的工件。

答案 4 :(得分:-1)

如果我可以假设您正在使用M2 Release Plugin,那么还有另一个问题。 在发布后跳过部署将是一个不必要的解决方法,因为我已经看到了这项工作。您应该尝试根据原因解决这个问题。 如果您能提供有关错误的更多信息,将会有所帮助。