gpt4 book ai didi

maven - 如何使用 Jenkins 发布特定分支

转载 作者:行者123 更新时间:2023-12-03 18:07:30 25 4
gpt4 key购买 nike

我有一个带有 M2 发布插件的 Jenkins。我有一份构建和发布的工作。

使用的存储库有 master 和 feature/bugfix 分支。作业配置为构建所有分支。另外部署主分支。所有稳定的更改都合并到 master 分支中,但最新的更改(尚未生效)在 bugfix 分支中进行。因此,最新版本(mvn install)是在这个 bugfix 分支上制作的。

如果我想发布这个项目,jenkins 会采用最新构建的修订版(bugfix 分支)并尝试发布它。由于 SNAPSHOT 依赖性,这是失败的。

我当然可以在发布时将“要构建的分支”设置为“master”。但是 a) 我需要在发布后重置它,并且 b) 每次我想发布时都需要这样做。

我也可以使用分支选项使此构建参数化,但此作业将不会由 scm 提交执行。

所以我的问题是:有没有办法/插件告诉 jenkins 发布特定分支?

编辑:我添加了我的 pom.xml 以便您可以提供一个易于理解的示例

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>my.parent.gid</groupId>
<artifactId>my.iarent.aid</artifactId>
<version>1.0.0</version>
</parent>

<name>Project Name</name>

<groupId>my.project.gid</groupId>
<artifactId>my.project.aid</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>

<url>${project_url}</url>

<ciManagement>
<system>${project_ciManagement.system}</system>
<url>${project_ciManagement.url}</url>
</ciManagement>

<scm>
<!-- read access -->
<connection>${project_scm.connection}</connection>
<!-- write access (release-plugin) -->
<developerConnection>${project_scm.developerConnection}</developerConnection>
<!-- browser access -->
<url>${project_scm.url}</url>
<tag>HEAD</tag>
</scm>

<properties>
<compiler.javaVersion>1.7</compiler.javaVersion>
<scm.repo>repo_name</scm.repo>
</properties>

<modules>
<module>Module1</module>
<module>Module2</module>
<module>Module3</module>
</modules>

最佳答案

将 pom 保留在您的发布分支上,因为它应该是:

<groupId>my.project.gid</groupId>
<artifactId>my.project.aid</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>

当您执行 mvn release:prepare 时,它​​会将 SCM 标记为 1.0.0,并将 pom 中的版本更改为 1.0.1-SNAPSHOT,为下一次迭代做好准备。

mvn release:perform 然后将获取标签 1.0.0,构建 Artifact 并将其推送到您的存储库、Nexus 或类似库。

你的功能分支应该有像这样的 pom:

<groupId>my.project.gid</groupId>
<artifactId>my.project.aid</artifactId>
<version>1.0.0-SP123-SNAPSHOT</version>
<packaging>pom</packaging>

其中SP123是类似的故事。您不会从此分支发布,因此版本并不重要。

当您的发布经理将功能分支合并到发布分支时,他们应该修复版本。

关于maven - 如何使用 Jenkins 发布特定分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42481255/

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