如何使用Jenkins发布特定分支

时间:2017-02-27 08:46:58

标签: maven jenkins maven-release-plugin

我有一个带有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>

2 个答案:

答案 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的故事类似。您不会从此分支发布,因此版本并不重要。

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