Maven utgivelse til Nexus
1. Oversikt
I den forrige artikkelen i denne serien satte vi opp en distribusjonsprosess med Maven til Nexus. I denne artikkelen konfigurerer vi Utgivelsesprosess med Maven - begge i pom av prosjektet så vel som i en Jenkins-jobb.
2. Datalager i pom
For at Maven skal kunne frigjøre til en Nexus Repository Server, må vi definere depotet informasjon via distributionManagement element:
nexus-utgivelser // localhost: 8081 / nexus / content / repositories / utgivelser
Hosted Releases Repository kommer ut av esken på Nexus, så det er ikke nødvendig å lage det eksplisitt.
3. SCM i Maven pom
Utgivelsesprosessen vil samhandle med Source Control for prosjektet - dette betyr at vi først må definere element i vår pom.xml:
scm: git: //github.com/user/project.git //github.com/user/project scm: git: //github.com/user/project.git
Eller ved hjelp av git-protokollen:
scm: git: [email protected]: user / project.git scm: git: [email protected]: user / project.git scm: git: [email protected]: user / project.git
4. Utgivelsesprogrammet
Standard Maven-plugin som brukes av en utgivelsesprosess er maven-release-plugin - konfigurasjonen for dette pluginet er minimal:
org.apache.maven.plugins maven-release-plugin 2.4.2 [email protected] {project.version} true releases
Det som er viktig her er at releaseProfiles konfigurasjon vil faktisk tvinge en Maven-profil - utgivelser profil - for å bli aktiv under utgivelsesprosessen.
Det er i denne prosessen at nexus-staging-maven-plugin brukes til å utføre en distribusjon til nexus-utgivelser Nexus-arkiv:
utgir org.sonatype.plugins nexus-staging-maven-plugin 1.5.1 standard-distribusjon distribuere distribuere nexus-utgivelser // localhost: 8081 / nexus / true
Programtillegget er konfigurert til å utføre utgivelsesprosessen uten iscenesettelsesmekanismen, samme som tidligere, for distribusjonsprosessen (skipStaging = sant).
Og ligner også på distribusjonsprosessen, Å slippe til Nexus er en sikret operasjon - så vi skal bruke Out of the Box utplassering bruker skjema Nexus igjen.
Vi må også konfigurere legitimasjonen for nexus-utgivelser server i det globale settings.xml (% USER_HOME% /. M2 / settings.xml):
nexus-utgivelser distribusjon_pass_for_deployment_user
Dette er den fullstendige konfigurasjonen
5. Utgivelsesprosessen
La oss dele ut frigjøringsprosessen i små og fokuserte trinn. Vi utfører en utgivelse når den nåværende versjonen av prosjektet er en SNAPSHOT-versjon - si 0,1-STILLBILDE.
5.1. Utgivelse: Rengjør
Rengjøre en utgivelse vil:
- slett utgivelsesbeskrivelsen (release.properties)
- slett eventuelle POM-filer
5.2. utgivelse: forbered
Neste del av utgivelsesprosessen er Forbereder utgivelsen; dette vil:
- utføre noen kontroller - det skal ikke være noen uforpliktende endringer, og prosjektet bør ikke avhenge av noen SNAPSHOT-avhengigheter
- endre versjonen av prosjektet i pom-filen til et fullstendig utgivelsesnummer (fjern SNAPSHOT-suffikset) - i vårt eksempel - 0.1
- kjøre prosjektet test suiter
- begå og skyv endringene
- lage stikkord ut av denne ikke-SNAPSHOT versjonskoden
- øke versjonen av prosjektet i pom - i vårt eksempel - 0.2-STILLBILDE
- begå og skyv endringene
5.3. utgivelse: utføre
Den siste delen av utgivelsesprosessen er Utfører utgivelsen; dette vil:
- utgivelsesmerke for kassen fra SCM
- bygge og distribuere utgitt kode
Dette andre trinnet i prosessen er avhengig av produksjonen fra Forbered trinnet - release.properties.
6. På Jenkins
Jenkins kan utføre utgivelsesprosessen på en av to måter - den kan enten bruke sine egne utgivelsesplugins, eller den kan ganske enkelt kjøre utfør utgivelsen med en standard maven-jobb som kjører de riktige utgivelsestrinnene.
De eksisterende Jenkins-pluginene som er fokusert på utgivelsesprosessen er:
- Slipp plugin
- M2 utgivelsesplugin
Men siden Maven-kommandoen for å utføre utgivelsen er enkel nok, kan vi ganske enkelt definere en standard Jenkins-jobb for å utføre operasjonen - ingen plugins er nødvendige.
Så for en ny Jenkins-jobb (Bygg et maven2 / 3-prosjekt) - definerer vi to strengparametere: releaseVersion = 0.1 og developmentVersion = 0.2-SNAPSHOT.
På Bygge konfigurasjonsdelen, kan vi ganske enkelt konfigurere følgende Maven-kommando for å kjøre:
Utgivelse: Ren utgivelse: forbered utgivelse: utfør -DreleaseVersion = $ {releaseVersion} -DevelopmentVersion = $ {developmentVersion}
Når du kjører en parametrisert jobb, vil Jenkins be brukeren om å spesifisere verdier for disse parametrene - så hver gang vi kjører jobben, må vi fylle ut de riktige verdiene for releaseVersion og utviklingVersjon.
Det er også verdt å bruke Plugin for opprydding av arbeidsområdet og sjekk Slett arbeidsområdet før byggingen starter alternativ for denne bygningen. Men husk at utføre trinn i utgivelsen bør nødvendigvis kjøres med samme kommando som forberedetrinn - dette er fordi sistnevnte utføre trinn vil bruke release.properties fil opprettet av forberede. Dette betyr at vi ikke kan ha en Jenkins-jobb som kjører forberedeog en annen kjører utføre.
7. Konklusjon
Denne artikkelen viste hvordan du implementerer prosessen med Å gi ut et Maven-prosjekt med eller uten Jenkins. I likhet med distribusjon bruker denne prosessen nexus-staging-maven-plugin å samhandle med Nexus og fokuserer på et git-prosjekt.