我有一个带有M2发布插件的Jenkins。 我有建立和释放的工作。
使用的存储库具有master和feature / bugfix分支。 该作业配置为构建所有分支。此外还部署了主分支。 所有稳定的更改都合并到主分支中,但最新的更改(尚未工作)是在bugfix分支中进行的。因此,最新版本(mvn install)是在这个bugfix分支上进行的。
如果我想发布这个项目,jenkins会采用最新的构建版本(bugfix分支)并尝试发布它。由于SNAPSHOT依赖性,这是失败的。
我当然可以在发布时将“branch to build”设置为“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>
答案 0 :(得分:0)
在Jenkins作业的配置中,您可以指定分支:
release_*
然后在每次构建时输入版本号作为Build With Parameters选项的一部分,然后从release_ {number}分支构建。
通过这种方式,您不必每次都编辑Jenkins作业。
答案 1 :(得分:0)
将pom保留在你的发布分支上,应该是:
<groupId>my.project.gid</groupId>
<artifactId>my.project.aid</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
当您执行mvn release时:准备它将SCM标记为1.0.0并将pom中的版本更改为1.0.1-SNAPSHOT,以备下次迭代。
mvn release:perform将获得标记1.0.0,构建并将工件推送到您的存储库,Nexus或类似工具。
你的功能分支应该有像:
<groupId>my.project.gid</groupId>
<artifactId>my.project.aid</artifactId>
<version>1.0.0-SP123-SNAPSHOT</version>
<packaging>pom</packaging>
SP123的故事类似。您不会从此分支发布,因此版本并不重要。
当您的发布经理将功能分支合并到发布分支时,他们应该修复版本。