2017-02-27 2 views
1

私はM2リリースプラグインでJenkinsを持っています。 私は建築と解放の仕事を持っています。Jenkinsで特定のブランチをリリースするには

使用するリポジトリには、masterとfeature/bugfixのブランチがあります。 ジョブは、すべてのブランチを構築するように構成されています。マスターブランチも展開されています。 すべての安定した変更はマスターブランチにマージされますが、最新の変更(まだ動作していません)はバグ修正ブランチで行われます。したがって、最新のビルド(mvn install)はこのbugfixブランチで行われます。

もし私がこのプロジェクトをリリースしたいのであれば、jenkinsは最新のビルドリビジョン(bugfixブランチ)を取り出し、これを解放しようとします。 SNAPSHOT依存関係のため、これは失敗しています。

もちろん、リリースするときに「ビルドするビルド」を「マスター」に設定することもできます。しかし、a)私はリリース後にこれをリセットする必要があり、b)これは私がリリースしたいときはいつも必要であろう。

このビルドをブランチオプションでパラメータ化することもできますが、このジョブはSCMコミットでは実行されません。

私の質問は:特定のブランチをリリースするためにジェンキンに伝える方法/プラグインはありますか?

EDIT: 私はあなたが理解しやすい例にジェンキンスジョブの設定で

<?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

を提供することができるかもしれないので、あなたが指定することができ、私のpom.xmlを追加しました

release_* 

次のようなビルドパラメータの一部としてバージョン番号を入力します。オプションをビルドするたびに、release_ {number}ブランチからビルドします。

このように、毎回Jenkinsジョブを編集する必要はありません。それがあるべきよう

+0

実際、私はあなたの質問の自動化された側面に対処したとは思わない、ごめんなさい! – HomerPlata

0

あなたのリリースブランチにポンポンを保管してください:

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

あなたはMVNのリリースを行うと:それは1.0.0としてSCMをタグ付けして1.0.1-にポンポンにバージョンを変更します準備SNAPSHOTは次の反復の準備ができています。

mvn release:performはタグ1.0.0を取得し、アーティファクトをビルドしてリポジトリNexusなどにプッシュします。 SP123は、同様の話です

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

あなたの機能ブランチのようなPOMSを持っている必要があります。このブランチからはリリースされませんので、バージョンは重要ではありません。

リリースマネージャは、機能ブランチをリリースブランチにマージしてバージョンを修正する必要があります。

+0

私はこれを正しく理解しているかどうかはわかりません。そこで私はpomを例として追加しました。私はいつもマスターブランチだけをリリースします!タグの物をもう少し詳しく説明できますか? – Naxos84

+0

私の答えを –

+0

更新しました。これは分かります。しかし、これは私の問題を解決するものではありません。最新のビルド(つまり、mvn install)はバグ修正ブランチ上で行われます。 "Perform Maven Release"を押すと、Jenkinsはこの最新ビルドをリリースしようとしています....しかし、私はマスターブランチをリリースしたいと思います。 :) – Naxos84

関連する問題