gpt4 book ai didi

jenkins - 避免在发布构建结束时部署 Artifactory

转载 作者:行者123 更新时间:2023-12-02 21:02:52 30 4
gpt4 key购买 nike

我在 Jenkins 有一份 Maven 工作。通常,在构建结束时, Artifactory 将通过 jenkins 构建后操作部署到 Artifactory 。但是如果我进行发布构建,在这种情况下我会从 Jenkins 那里得到一个错误。那么,是否有可能避免在发布版本结束时部署 Artifactory 。

让我精确地指出错误。 Maven 的目标是“全新安装”。我需要通过“正常”工作部署到 Artifactory 的后期操作。如果我通过 M2 发布插件发布此 Artifactory ,则相关 Artifactory 的部署将由 M2 发布插件本身完成。但在作业结束时,post 操作会尝试使用旧的 SNAPSHOT 版本来部署 Artifactory ,这是 Artifactory 所不允许的。

最佳答案

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

-Dresume=false release:prepare release:perform 

如果替换为以下M2发布插件,则默认不会调用由release:perform目标发起的部署目标。

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

就我而言,我不希望在release:perform和release:prepare目标完成后 Artifactory 就进入Artifactory,因此上述内容有所帮助。但是,即使 Jenkins 作业具有“部署到 Artifactory”到快照或发布存储库的“构建后”操作(取决于您拥有哪种构建,也称为自动/手动运行构建作业或通过运行 Perform Maven Release ),它从未调用构建后操作。

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

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

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

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

IS_M2RELEASEBUILD M2 Release 插件附带的 bool 变量可以在条件步骤中使用,以在此处或那里部署或根本不部署。

关于jenkins - 避免在发布构建结束时部署 Artifactory ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151343/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com