Release management
Versionnummer
Vi ska i största mån försöka hantera versionnummer enligt nedan:
Givet ett versionnummer MAJOR.MINOR.PATCH[ -RCX | -SNAPSHOT]:
- MAJOR version, öka vid inkompatibla ändringar av API eller stora genomgripande förändringar ,
- MINOR version, öka vid bakåtkompatibla förändringar
- PATCH version, öka vid en patch- ellel bugfix.
- -RCX, används för releasekanditad där X är ett löpnummer. Ex. Relasekanditat 1=>-RC1.
- -SNAPSHOT, används för utvecklingsversioner.
Konfigurering av pom för releasehantering
För att skapa releaser används Maven och Mavens release-plugin. Kontrollera att följande kod finns i rot-pom'en.
build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.1</version> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> <tagNameFormat>v@{project.version}</tagNameFormat> <localCheckout>true</localCheckout> </configuration> </plugin> </plugins> </pluginManagement> </build>
För att Mavens deploy plugin ska veta var den ska deploya releaserna skall följande finnas i projektets root pom (eller i parent till root pom). Url:erna kan man sedan sätta i den lokala (eller Jenkins) Maven settings filen (se kommande exempel)
<distributionManagement> <repository> <id>release-nexus</id> <name>Release Nexus</name> <url>${releases-nexus-url}</url> </repository> <snapshotRepository> <id>snapshot-nexus</id> <name>Snapshot Nexus</name> <url>${snapshot-nexus-url}</url> </snapshotRepository> </distributionManagement>
För att releasepluginen ska kunna pusha till remote git måste url:er till git konfigureras i projektets root pom. Exempel:
<scm> <url>http://github.com/skltp/vp</url> <connection>scm:git:https://github.com:443/skltp/vp.git</connection> <developerConnection>scm:git:https://github.com:443/skltp/vp.git</developerConnection> <tag>HEAD</tag> </scm>
Maven settings fil (~/.m2/settings.xml) bör sedan sättas upp enligt nedan för att peka ut var dependencies skall hämtas (via mirror) och vart den skall deploya filerna (Till Ineras Nexus i exemplet nedan) samt användaruppgifter till Ineras Nexus (i sektionen "servers").
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <mirrors> <!-- Mirror används för att hämta dependencies via Inera Nexus --> <mirror> <id>Inera Nexus</id> <name>Inera Nexus Public Mirror</name> <url>https://nexus.drift.inera.se/repository/maven-public/</url> <mirrorOf>*,!grails</mirrorOf> </mirror> </mirrors> <profiles> <profile> <id>skltp</id> <properties> <!-- Ställer om URL för snapshots och release i distributionManagement i pom.xml, pom.xml måste använda dessa för att det ska fungera --> <releases-nexus-url>https://nexus.drift.inera.se/repository/SKLTP-Releases/</releases-nexus-url> <snapshot-nexus-url>https://nexus.drift.inera.se/repository/SKLTP-Snapshots/</snapshot-nexus-url> </properties> </profile> </profiles> <servers> <!-- Release Repot på Inera Nexus, exakt repo pekas ut av profilen --> <server> <id>release-nexus</id> <username>xxxxxxxxx</username> <password>pppppppppp</password> </server> <!-- Snapshot Repot på Inera Nexus, exakt repo pekas ut av profilen --> <server> <id>snapshot-nexus</id> <username>xxxxxxxxx</username> <password>pppppppppp</password> </server> </servers> <activeProfiles> <activeProfile>skltp</activeProfile> </activeProfiles> </settings>
Bygga release
Se Skapa release (generell instruktion) och Skapa release med Jenkins
Artifakterna kommer nu laddas upp på Ineras Nexus och vara publikt tillgängliga under group-id se.skltp
,.