2017-02-27 5 views
1

Ich habe eine Jenkins mit dem M2-Release-Plugin. Ich habe einen Job für den Aufbau und die Freigabe.Wie bestimmte Zweigstelle mit Jenkins freizugeben

Das verwendete Repository verfügt über Master- und Feature/Bugfix-Zweige. Der Job ist so konfiguriert, dass alle Zweige erstellt werden. Der Masterzweig wird zusätzlich bereitgestellt. Alle stabilen Änderungen werden in den Master-Zweig übernommen, aber die letzten Änderungen (die noch nicht funktionieren) werden in einem Bugfix-Zweig vorgenommen. Daher wird der neueste Build (mvn install) in dieser Bugfix-Verzweigung erstellt.

Wenn ich dieses Projekt veröffentlichen will, nimmt Jenkins die neueste gebaute Revision (der Bugfix-Zweig) und versucht, dies zu veröffentlichen. Aufgrund von SNAPSHOT-Abhängigkeiten schlägt dies fehl.

Ich könnte natürlich den "branch to build" auf "master" beim Freigeben setzen. Aber a) Ich müsste das nach der Veröffentlichung zurücksetzen und b) das wäre jedes Mal notwendig, wenn ich es veröffentlichen möchte.

Ich könnte diesen Build auch mit Verzweigungsoptionen parametrisieren, aber dann wird dieser Job nicht von scm commits ausgeführt.

Also meine Frage ist: Gibt es einen Weg/Plugin, um Jenkins zu sagen, einen bestimmten Zweig zu veröffentlichen?

EDIT: ich meine pom.xml hinzugefügt, so dass Sie eine einfach liefern können beispielsweise

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

Antwort

0

In der Config des Jenkins Job zu verstehen, können Sie angeben, die verzweigen Sie etwas wie:

release_* 

Und geben Sie dann eine Versionsnummer als Teil der Build With Parameters ein Option jedes Mal, wenn Sie bauen, die dann von Release_ {number} Zweig bauen.

Auf diese Weise müssen Sie den Jenkins-Job nicht jedes Mal bearbeiten.

+0

Eigentlich glaube ich nicht, ich habe den automatisierten Aspekt Ihrer Frage angesprochen, sorry! – HomerPlata

0

Halten Sie die pom auf Ihrem Release-Zweig wie es sein sollte:

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

Wenn Sie das tun mvn release: bereiten sie SCM als 1.0.0 Tag wird und die Version in der pom zu 1.0.1- ändern SNAPSHOT bereit für die nächste Iteration.

mvn release: perform wird dann das Tag 1.0.0, bauen und schieben Sie das Artefakt zu Ihrem Repository, Nexus oder ähnliches.

sollte Ihre Funktion Zweige haben Poms wie:

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

Wo SP123 die Geschichte ähnlich ist. Sie werden von dieser Verzweigung nicht freigeben, also sind die Versionen nicht wichtig.

Wenn Ihr Release Manager die Zusammenführung des Feature-Zweigs in den Release-Zweig durchführt, sollte er die Version reparieren.

+0

Ich bin mir nicht sicher, ob ich das richtig verstehe. Deshalb habe ich meinen Pom als Beispiel hinzugefügt. Ich werde immer nur den Meisterzweig freigeben! Kannst du bitte das Tag-Ding etwas genauer erklären? – Naxos84

+0

Aktualisiert meine Antwort –

+0

Ok, ich verstehe das. Aber das behebt mein Problem nicht: Der letzte Build (d. H. Mvn install) wird in einem Bugfix-Zweig erstellt. Wenn ich "Perform Maven Release" drücke, versucht Jenkins diesen letzten Build zu veröffentlichen .... Aber ich möchte den Master-Zweig freigeben. :) – Naxos84

Verwandte Themen