Utvecklingsmiljö
För att utveckla och underhålla SKLTP samt köra automatiska enhetstester och integrationstester i utvecklingsmiljön krävs:
- Java SE 7 och 8
- Maven 3
- Git klient
Val av IDE är valfritt men om Eclipse används så rekommenderas följande pluginer för versionshantering av källkod:
- EGit för Git
För att exekvera systemtester används:
- SoapUI för funktionella tester
- Klientcertifikat
- Gatling för lasttester och robusthetstester
För mer information om hur Gatling används se /wiki/spaces/SKLTP/pages/3187836104
Utöver detta behövs rättigheter till följande:
- Github push rättigheter
- Rättigheter till Ineras Jenkins server.
- Rättigheter till Ineras Nexus
- JIRA och Confluence wiki
- Tillgång till fysiska testmiljöer
Git för utvecklare
/wiki/spaces/SKLTP/pages/3187835204
License headers
Maven bygget kontrollerar att det finns licensheadrar i källkodsfilerna (till exempel, när man kör: mvn clean install) genom att använda com.mycila.maven-license-plugin:maven-license-plugin.
Om bygget falerar p.g.a. att licensheadrar saknas:
[INFO] Missing header in: /Users/hakan/Documents/scm/svn_skltp/jms-admin-web_tr/src/main/java/se/skltp/admin/core/services/HdLabAmq.java [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE
Det kan man lösa genom:
mvn license:format
Verifiering
Innan release av en komponent ska funktionella tester, lasttester och robusthetstester genomföras.
/wiki/spaces/SKLTP/pages/3187836104
Release Management
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>
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").
<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:
mvn release:prepare mvn release:perform
eller genom att manuellt uppdatera versioner, skapa taggar, pusha till github och köra:
mvn deploy
Artifakterna kommer nu laddas upp på Ineras Nexus och vara publikt tillgängliga under group-id se.skltp
,.
Paketnamn
SKLTP komponenter
se.skltp.<komponentnamn>, tex se.skltp.agp
Aggregerande tjänster
se.skltp.aggregatingservices.<tjänstedomän>.<tjänsteinteraktion>, tex se.skltp.aggregatingservices.riv.clinicalprocess.healthcond.basic.getaggregatedmeasurement
Anpassningstjänster
se.skltp.adapterservices.<adapternamn>, tex se.skltp.adapterservices.DominoHttp10Adapter
Virtuella tjänster
se.skltp.virtualservices.<tjänstedomän>, tex se.skltp.virtualservices.clinicalprocess.activityprescription.actoutcome.