Maven Release naar Nexus

1. Overzicht

In het vorige artikel van deze serie hebben we een implementatieproces met Maven naar Nexus. In dit artikel zullen we het Releaseproces met Maven - beide in de pom van het project en in een Jenkins-baan.

2. Repository in het pom

Om ervoor te zorgen dat Maven kan worden vrijgegeven op een Nexus Repository Server, moeten we definieer de repository informatie via de distributiebeheer element:

  nexus-releases // localhost: 8081 / nexus / content / repositories / releases 

De gehoste Releases Repository komt uit de doos op Nexus, dus het is niet nodig om deze expliciet te maken.

3. SCM in de Maven pom

Het vrijgaveproces zal samenwerken met de broncontrole van het project - dit betekent dat we eerst het element in onze pom.xml:

 scm: git: //github.com/user/project.git //github.com/user/project scm: git: //github.com/user/project.git 

Of gebruik het git-protocol:

 scm: git: [e-mail beschermd]: gebruiker / project.git scm: git: [e-mail beschermd]: gebruiker / project.git scm: git: [e-mail beschermd]: gebruiker / project.git 

4. De release-plug-in

De standaard Maven-plug-in die door een releaseproces wordt gebruikt, is de maven-release-plugin - de configuratie voor deze plug-in is minimaal:

 org.apache.maven.plugins maven-release-plugin 2.4.2 [email protected] {project.version} true releases 

Wat hier belangrijk is, is dat de releaseProfiles configuratie zal in feite een Maven-profiel afdwingen - het releases profiel - om actief te worden tijdens het vrijgaveproces.

Het is in dit proces dat de nexus-staging-maven-plugin wordt gebruikt om een ‚Äč‚Äčimplementatie uit te voeren naar de nexus-releases Nexus-opslagplaats:

  releases org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 standaard-implementeren deploy nexus-releases // localhost: 8081 / nexus / true 

De plug-in is geconfigureerd om het releaseproces uit te voeren zonder het ensceneringsmechanisme, hetzelfde als voorheen, voor het implementatieproces (skipStaging = waar).

En ook vergelijkbaar met het implementatieproces, Vrijgeven aan Nexus is een beveiligde operatie - dus we gaan de Out of the Box gebruiken inzet gebruiker vormt Nexus opnieuw.

We moeten ook de inloggegevens configureren voor het nexus-releases server in het global settings.xml (% USER_HOME% /. M2 / settings.xml):

  nexus-releases implementatie the_pass_for_the_deployment_user 

Dit is de volledige configuratie

5. Het vrijgaveproces

Laten we het releaseproces opsplitsen in kleine en gerichte stappen. We voeren een release uit wanneer de huidige versie van het project een SNAPSHOT-versie is - zeg maar 0.1-MOMENTOPNAME.

5.1. Vrijgeven: schoon

Een release schoonmaken zullen:

  • verwijder de release descriptor (release.properties)
  • verwijder eventuele back-up POM-bestanden

5.2. release: voorbereiden

Het volgende deel van het vrijgaveproces is Voorbereiding van de release; dit zal:

  • voer enkele controles uit - er mogen geen niet-gecommitteerde wijzigingen zijn en het project mag niet afhankelijk zijn van SNAPSHOT
  • verander de versie van het project in het pom-bestand naar een volledig releasenummer (verwijder het SNAPSHOT-achtervoegsel) - in ons voorbeeld - 0.1
  • voer het project uit test suites
  • commit en push de wijzigingen
  • maak het label uit deze niet-SNAPSHOT-versiecode
  • verhoog de versie van het project in de pom - in ons voorbeeld - 0.2-MOMENTOPNAME
  • commit en push de wijzigingen

5.3. release: uitvoeren

Het laatste deel van het vrijgaveproces is De release uitvoeren; dit zal:

  • checkout release-tag van SCM
  • bouw en implementeer vrijgegeven code

Deze tweede stap van het proces is afhankelijk van de uitvoer van de voorbereidingsstap - het release.properties.

6. Op Jenkins

Jenkins kan het releaseproces op twee manieren uitvoeren: het kan ofwel zijn eigen release-plug-ins gebruiken, of het kan eenvoudig de release uitvoeren met een standaard maven-taak die de juiste releasestappen uitvoert.

De bestaande Jenkins-plug-ins gericht op het releaseproces zijn:

  • Plug-in vrijgeven
  • M2 Release-plug-in

Omdat het Maven-commando voor het uitvoeren van de release echter eenvoudig genoeg is, kunnen we eenvoudig een standaard Jenkins-taak definiëren om de bewerking uit te voeren - geen plug-ins nodig.

Dus voor een nieuwe Jenkins-taak (Bouw een maven2 / 3-project) - zullen we 2 String-parameters definiëren: releaseVersion = 0.1 en developmentVersion = 0.2-SNAPSHOT.

Bij de Bouwen configuratiegedeelte, kunnen we eenvoudig de volgende Maven-opdracht configureren om uit te voeren:

Release: schone release: release voorbereiden: perform -DreleaseVersion = $ {releaseVersion} -DdevelopmentVersion = $ {developmentVersion}

Bij het uitvoeren van een geparametriseerde taak, zal Jenkins de gebruiker vragen om waarden voor deze parameters op te geven - dus elke keer dat we de taak uitvoeren, moeten we de juiste waarden invullen voor uitgegeven versie en developmentVersion.

Het is ook de moeite waard om de Workspace Cleanup Plugin te gebruiken en het Verwijder de werkruimte voordat het bouwen begint optie voor deze build. Houd er echter rekening mee dat de uitvoeren stap van de release moet noodzakelijkerwijs worden uitgevoerd met dezelfde opdracht als de bereidenstap - dit komt omdat de laatste uitvoeren step gebruikt de release.properties bestand gemaakt door bereiden. Dit betekent dat we geen Jenkins-taak kunnen laten draaien bereidenen nog een rennen uitvoeren.

7. Conclusie

Dit artikel liet zien hoe u het proces van Een Maven-project vrijgeven met of zonder Jenkins. Net als bij implementatie gebruikt dit proces de nexus-staging-maven-plugin om te communiceren met Nexus en richt zich op een git-project.