Maven-frigivelse til Nexus

1. Oversigt

I den foregående artikel i denne serie oprettede vi en implementeringsproces med Maven til Nexus. I denne artikel konfigurerer vi Udgivelsesproces med Maven - begge i pom af projektet såvel som i et Jenkins-job.

2. Datalager i pom

For at Maven skal kunne frigive til en Nexus Repository Server, skal vi definere lageret information via distributionManagement element:

  nexus-udgivelser // localhost: 8081 / nexus / indhold / opbevaringssteder / udgivelser 

Det hostede udgivelseslager kommer ud af kassen på Nexus, så det er ikke nødvendigt at oprette det eksplicit.

3. SCM i Maven pom

Udgivelsesprocessen vil interagere med projektets kildekontrol - det betyder, at vi først skal definere element i vores pom.xml:

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

Eller ved hjælp af git-protokollen:

 scm: git: [email protected]: user / project.git scm: git: [email protected]: user / project.git scm: git: [email protected]: user / project.git 

4. Release Plugin

Standard Maven-pluginet, der bruges af en frigørelsesproces, er maven-release-plugin - konfigurationen for dette plugin er minimal:

 org.apache.maven.plugins maven-release-plugin 2.4.2 [email protected] {project.version} ægte udgivelser 

Hvad der er vigtigt her er, at releaseProfiles konfiguration vil faktisk tvinge en Maven profil - udgivelser profil - for at blive aktiv under frigivelsesprocessen.

Det er i denne proces, at nexus-staging-maven-plugin bruges til at udføre en implementering til nexus-udgivelser Nexus-lager:

  frigiver org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 standard-deploy implementere implementere nexus-releases // localhost: 8081 / nexus / true 

Pluginet er konfigureret til at udføre frigivelsesprocessen uden iscenesættelsesmekanismen, samme som tidligere, for implementeringsprocessen (skipStaging = sandt).

Og ligesom implementeringsprocessen, Udgivelse til Nexus er en sikret operation - så vi skal bruge Out of the Box implementering brugerformular Nexus igen.

Vi skal også konfigurere legitimationsoplysningerne til nexus-udgivelser server i det globale settings.xml (% USER_HOME% /. M2 / settings.xml):

  nexus frigiver implementering the_pass_for_the_deployment_user 

Dette er den fulde konfiguration

5. Frigivelsesprocessen

Lad os opdele frigivelsesprocessen i små og fokuserede trin. Vi udfører en frigivelse, når den aktuelle version af projektet er en SNAPSHOT-version - siger 0,1-SNAPSHOT.

5.1. Frigivelse: Rens

Rengøring af frigørelse vilje:

  • slet frigivelsesbeskrivelsen (release.properties)
  • slet eventuelle backup POM-filer

5.2. frigivelse: forbered

Næste del af frigørelsesprocessen er Forberedelse af frigivelsen; dette vil:

  • udfør nogle kontroller - der bør ikke være nogen uforpligtende ændringer, og projektet skal afhænge af ingen SNAPSHOT-afhængigheder
  • ændre versionen af ​​projektet i pom-filen til et komplet frigivelsesnummer (fjern SNAPSHOT-suffiks) - i vores eksempel - 0.1
  • køre projektet prøve suiter
  • begå og skub ændringerne
  • oprette tag ud af denne ikke-SNAPSHOT-versionskode
  • øge versionen af projektet i pom - i vores eksempel - 0,2-SNAPSHOT
  • begå og skub ændringerne

5.3. frigivelse: udfør

Den sidste del af frigørelsesprocessen er Udførelse af frigivelsen; dette vil:

  • udgivelsesmærke til kassen fra SCM
  • opbyg og implementer frigivet kode

Dette andet trin i processen er afhængig af output fra Forbered trin - release.properties.

6. På Jenkins

Jenkins kan udføre frigivelsesprocessen på en af ​​to måder - den kan enten bruge sine egne frigivelsesplugins, eller den kan simpelthen køre udføre frigivelsen med et standard maven-job, der kører de rigtige frigivelsestrin.

De eksisterende Jenkins-plugins med fokus på frigørelsesprocessen er:

  • Slip plugin
  • M2 Release Plugin

Men da Maven-kommandoen til udførelse af frigivelsen er enkel nok, kan vi simpelthen definere et standard Jenkins-job til at udføre operationen - ingen plugins nødvendige.

Så for et nyt Jenkins-job (Byg et maven2 / 3-projekt) - definerer vi 2 strengparametre: releaseVersion = 0,1 og developmentVersion = 0.2-SNAPSHOT.

Ved Byg konfigurationsafsnit, kan vi simpelthen konfigurere følgende Maven-kommando til at køre:

Frigivelse: Ren frigivelse: forbered frigivelse: udfør -DreleaseVersion = $ {releaseVersion} -DdevelopmentVersion = $ {developmentVersion}

Når du kører et parametriseret job, vil Jenkins bede brugeren om at angive værdier for disse parametre - så hver gang vi kører jobbet, skal vi udfylde de rigtige værdier for releaseVersion og udviklingVersion.

Det er også værd at bruge Workspace Cleanup Plugin og kontrollere Slet arbejdsområde, før build starter mulighed for denne build. Husk dog, at udføre trin i frigivelsen skal nødvendigvis køres med den samme kommando som forberedetrin - dette er fordi sidstnævnte udføre trin vil bruge release.properties fil oprettet af forberede. Det betyder, at vi ikke kan køre et Jenkins-job forberedeog en anden kører udføre.

7. Konklusion

Denne artikel viste, hvordan man implementerer processen med Udgivelse af et Maven-projekt med eller uden Jenkins. I lighed med implementering bruger denne proces nexus-staging-maven-plugin at interagere med Nexus og fokuserer på et git-projekt.