【问题标题】:How can I configure Jenkins not to deploy to Maven repository unless I am performing a release build?除非我执行发布构建,否则如何配置 Jenkins 不部署到 Maven 存储库?
【发布时间】:2023-03-14 14:45:02
【问题描述】:

我已经配置了一个 Jenkins 作业来构建一个 Maven 3 项目并启用了“Maven 发布构建”插件,还添加了一个构建后操作来将工件部署到 Nexus 存储库。

但是,我不希望部署工件,除非用户通过单击“执行 Maven 发布”链接而不是“立即构建”按钮来启动构建。当单击“立即构建”时,我只想要一个不会在任何地方部署的快照构建。

我从文档中了解到,我可以使用名为 IS_M2RELEASEBUILD 的环境变量来控制此行为。当通过“执行 Maven 发布”链接启动构建时,此环境变量由 M2 发布插件设置为 true。但是后期构建操作完全忽略了这一点。

我正在使用 Jenkins LTS 1.509.3 和 Maven 3.0.5。

更新:请注意,我不是在寻找使用 POM 中的 Maven 发布插件的解决方法。我的目标是创建一个单一的 Jenkins 作业,充当由签入触发的 CI 构建(不部署快照),并能够使用相同的作业使用 Jenkins M2 Release 插件执行发布构建。

【问题讨论】:

  • 将版本改为SNAPSHOT并定义快照库如何?
  • @AbhijithNagarajan 我看不到有 2 个构建后操作(一个用于发布,一个用于快照)的方法,我想我会遇到类似的问题找到有条件执行一个或另一个。此外,我不想实际部署快照工件。
  • @AlexanderKudrevatykh 如果我要使用 Maven 部署工件,那么我需要两份工作。一个用于发布构建,一个用于 CI 构建。我试图避免为每个独立版本化和发布的组件维护两个工作。
  • 你不能将部署目标添加到发布目标中吗?我猜它只有在发布时才会被执行。
  • 使用 pom 中的配置不是“解决方法”;当 Jenkins 作业执行“发布:准备发布:执行”操作时,您正在隐式使用 maven-release-plugin。 “这个插件允许您使用 Jenkins 中的 maven-release-plugin 执行发布构建。”如果您真的不想在 pom 中执行此操作,您可能只需将 -Dgoals=deploy 附加到“发布目标和选项”部分,但我想不出一个不将其放入 pom 的理由。在您调用 jenkins 工作中的一个发布目标之前,它不会产生任何影响。

标签: maven jenkins maven-release-plugin


【解决方案1】:

看看Flexible Publish Plugin

我认为您可以根据所需的模式轻松检查您的环境变量

并触发正确的构建后操作(抱歉,没有部署到 maven)

【讨论】:

    【解决方案2】:

    如果您将部署操作添加到 Maven 发布目标,那么您不需要在 Jenkins 作业中单独执行步骤。这些目标仅在 release:perform 时执行。比如:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <configuration>
        <goals>deploy</goals>
      </configuration>
    </plugin>
    

    Peter Schuetze 在 cmets 中回答了这个问题,并且可能应该发布这个答案以获得赏金。

    【讨论】:

      【解决方案3】:

      我对这个问题的评论显然是答案。 ;)

      您不能将部署目标添加到发布目标吗?我猜想 只有在发布时才会执行。

      【讨论】:

        猜你喜欢
        • 2014-12-28
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        • 2019-09-28
        • 1970-01-01
        • 2012-04-15
        • 2022-07-25
        • 2022-01-07
        相关资源
        最近更新 更多