Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.

Versionnummer

Vi ska i största mån försöka hantera versionnummer enligt nedan:

Givet ett versionnummer MAJOR.MINOR.PATCH[ -RCX | -SNAPSHOT]:

  1. MAJOR version, öka vid inkompatibla ändringar av API eller stora genomgripande förändringar ,
  2. MINOR version, öka vid bakåtkompatibla förändringar
  3. PATCH version, öka vid en patch- ellel  bugfix.
  4. -RCX, används för releasekanditad där X är ett löpnummer. Ex.  Relasekanditat 1=>-RC1.
  5. -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.

Kodblock
titlepom.xml
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)

Kodblock
titlepom.xml
<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:

Kodblock
titlepom.xml
<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").

Kodblock
titlesettings.xml
<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.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.inera.se/repository/SKLTP-Releases/</releases-nexus-url>
         <snapshot-nexus-url>https://nexus.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>

Normalt bör en release skapas via ett releasejobb i Ineras Jenkins server men går att skapa lokalt genom:

Kodblock
mvn release:prepare
mvn release:perform

eller genom att manuellt uppdatera versioner, skapa taggar, pusha till github och köra:

...


Artifakterna kommer nu laddas upp på  Ineras Nexus och vara publikt tillgängliga under group-id se.skltp,.