Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Projektstruktur .................................................................................................................................................. 3
Releases ............................................................................................................................................................. 4
Tests ................................................................................................................................................................... 4

Indledning

Dette dokument beskriver hvordan man kommer i gang med at tilpasse eller videreudvikle SOSI-GW ud fra kildeteksten.

...

SOSI-GW afhænger af en lang række af andre open source projekter.

Til at styre disse afhængigheder benyttes "Ivy", som er et Ant-plugin (se {+}http://ant.apache.org/ivy+[ |http://ant.apache.org/ivy]for mere information). Konfiguration af Ivy og basal build-struktur hentes fra projektet "trifork-common", som er inkluderet i SOSI-GW-projektet. Det forventes at der findes Java (>= 1.5.0) og Ant (>= 1.7.0) i omgivelsen.afhængigheder og byg af WAR fil bruges maven.

SOSI-GW

SOSI-GW projektet ligger på nspop svn-repository på følgende adresse: {+}https://svn.nspop.dk/svn/trifork/sosi+-gw/trunk/[ |https://svn.nspop.dk/svn/trifork/sosi-gw/trunk/]
Miljøvariablen "JAVA_HOME" skal være sat og pege på det JDK, der svarer til den Java, der er den aktive. Det er ikke tilstrækkeligt med et JRE. (Eksempel: export JAVA_HOME=/usr/lib/jvm/java-6-sun)
Udfør "ant" i projektet. Dette henter en hel række open source projekter fra nettet og bygger projektet. Herefter kan Eclipse åbne projektet, med alle dependencies på deres rette plads. Bemærk, at hvis projektet åbnes i Eclipse før Ant er kørt, vil der være fejl i projektet. Disse fejl forsvinder efter Ant er kørt.components/sosigw/trunk/

Projektstruktur

SOSIGW-projektet er et Eclipse-projekt, og har følgende struktur:

src/main/java
src/main/resources

Indeholder kildekode samt statisk konfiguration og andre ressource-filer

src/test/java
src/test/resources

Indeholder unit- og integrationstests

performance/

Indeholder JMeter performancetests

doc/

Indeholder al dokumentation på nær Javadoc, som kan genereres via ant javadoc.

etc/
etc-legacy/

Indeholder filer, der anvendes i forbindelse med byggeprocessen, f.eks. XML-skemaer- WSDL-filer mv.

Etc-legacy indeholder filer, som er flyttet med fra forrige kodebase. Og som evt. kan slettes ved næste release.

launch/

Indeholder launchere, der kan anvendes i forbindelse med udvikling af GWT i Hosted Mode

build-lib/

Indeholder de jarfiler, projektet benytter sig af. Bemærk at dette bibliotek laves automatisk af Ant, og det skal ikke ligge i Subversion

...

De jar filer som projektet har afhængigheder til  findes i diverse maven repositories.
I build-lib findes jar-filer, som vi ikke pt. kan finde i maven repositories. Derfor indkluderes de i maven ved at pege på en lokal kopi.

target/Indeholder alt der genereres i forbindelse med byggeprocessen, dvs kompilerede filer, genererede source-filer og andre artefakter. Dette dir skal heller ikke ligge i Subversion.
trifork-common/

Indeholder et basalt byggemiljø baseret på Ant og Ivy. vendor/ Indeholder dokumentation på nogle af de 3.parts-jarfiler der anvendes.

...

src/main/webapp/Indeholder de filer, der skal pakkes med i den færdige war-fil på nær class- og jar-filer

...

ChangeLog Beskriver hvilke ændringer, der er sket i de forskellige versioner.

Releases

Et nyt release laves ved først at opdatere ChangeLog-filen med ændringerne fra sidste release. Herefter checkes det at projektet kan bygges og at alle tests kører uden fejl. Herefter køres release.sh med det nye versionsnummer som argument, f.eks. ./release.sh 1.0.5. Hvis der releases til nsp køres scriptet nsprelsease.sh, ligeledes med versionsnummer.
Udvikles der under Windows kan release foretages manuelt med følgende trin:

  • Lav en svn update for at sikre, at den seneste version er hentet.
  • Lav et nyt tag i SVN baseret på trunk, der hedder vx.y.z hvor x.y.z er det nye versionsnummer.
  • Kør ant clean
  • Pak projektet til en tar.gz-fil, der hedder sosigw-x.y.x.tar.gz
  • Placer denne fil i svn under releases
  • Kør ant for at bygge en war-fil
  • Omdøb war-filen (som ligger under target) til sosigw-x.y.z.war
  • Placer war-filen sammen med tar.gz-filen i svn

Tests

Maven

Koden kan bygges med kommandoen

Code Block
languagebash
mvn install

Docker

Koden kan afvikles lokalt med kommandoen

Code Block
languagebash
docker-compose -f compose/development/docker-compose.yml up --build

Jenkins

Koden kan bygges vha. Jenkins

https://jenkins.nspop.dk/job/SOSIGW/

Og man kan også pushe byg til Nexus.

Releases

Når koden skal releases, så skal man første have tjekket alle rettelser ind på trunk. Derefter skal man afvikles kommandoen

Code Block
languagebash
maven release:prepare

Tests

Unittest afvikles når koden bygges med maven kommando. Man kan også afvikles selvstændigt med kommandoen

Code Block
languagebash
mvn test

Integrationstests er endnu ikke flyttet til mavenUnit- og integrationstests er placeret under test/, og følger den samme pakkestruktur som de klasser der testes. Der anvendes normal Junit 3 til at implementere tests.
Tests kan køres på to måder: Enten via Ant (ant test) eller via Eclipse. I Eclipse højreklikkes på test og under Run As vælges Unit Test.
Så vidt muligt navngives testmetoder efter deres hensigt – dvs. f.eks. testConditionShouldBeTrue() i stedet for test1().
Når tests køres via Ant laves der desuden coverage måling via Clover. Coverage-rapporter kan genereres med Ant coverage-report, som derefter kan findes under target/coverage.