Verinice/Kompilieren

Aus Foxwiki

Vernice kompilieren - Client, Update-Site und Server für Linux, Mac und Windows

Umgebung

Betriebssystem

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"

Java

$ java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10-Debian-1)
OpenJDK 64-Bit Server VM (build 17.0.6+10-Debian-1, mixed mode, sharing)
$ echo $JAVA_HOME
/usr/lib/jvm/default-java/
$ ls /usr/lib/jvm/
default-java -> java-1.17.0-openjdk-amd64
java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64
java-1.17.0-openjdk-amd64 -> java-17-openjdk-amd64
java-1.18.0-openjdk-amd64 -> java-18-openjdk-amd64
java-1.19.0-openjdk-amd64 -> java-19-openjdk-amd64
java-11-openjdk-amd64
java-1.20.0-openjdk-amd64 -> java-20-openjdk-amd64
java-17-openjdk-amd64
java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64
java-18-openjdk-amd64
java-19-openjdk-amd64
java-20-openjdk-amd64
java-8-openjdk-amd64
openjdk-11
openjdk-17
openjdk-18
openjdk-19
openjdk-20

Quellen bereitstellen

$ cd /usr/src
$ git clone https://github.com/SerNet/verinice
Klone nach 'verinice'...
remote: Enumerating objects: 148244, done.
remote: Counting objects: 100% (6964/6964), done.
remote: Compressing objects: 100% (2221/2221), done.
remote: Total 148244 (delta 4588), reused 6150 (delta 4235), pack-reused 141280
Empfange Objekte: 100% (148244/148244), 1.23 GiB | 8.96 MiB/s, fertig.
Löse Unterschiede auf: 100% (95543/95543), fertig.
Aktualisiere Dateien: 100% (12390/12390), fertig.
Basisverzeichnis
$ ls /usr/srv/verinice
bouncycastle sernet.birt.feature sernet.thirdparty.feature
CODINGSTYLE.md sernet.client.service sernet.verinice.app.feature
COPYRIGHT.md sernet.client.service.handlerrights sernet.verinice.bp.importer
dependencies sernet.datatools.feature sernet.verinice.desktop.integration
doc sernet.eclipse.feature sernet.verinice.extraresources.feature
gnumail sernet.gs.db.fragment sernet.verinice.extraresources.jre_linux_64
gui-test-runner sernet.gs.ehcache.fragment sernet.verinice.extraresources.jre_macos_64
jbpm sernet.gs.hibernate.fragment sernet.verinice.extraresources.jre_win_64
Jenkinsfile sernet.gs.log4j.fragment sernet.verinice.fei.rcp
Jenkinsfile.nightly sernet.gs.pax_web.fragment sernet.verinice.fei.service
Jenkinsfile.rcptt-all-report-tests sernet.gs.reveng sernet.verinice.kerberos
Jenkinsfile.rcptt-client-performance-test sernet.gs.server sernet.verinice.lang.feature
Jenkinsfile.rcptt-client-test sernet.gs.server.feature sernet.verinice.oda.driver
Jenkinsfile.rcptt-product-report-test sernet.gs.server.tests sernet.verinice.releng.client.product
Jenkinsfile.rcptt-server-performance-test sernet.gs.service sernet.verinice.releng.server.product
Jenkinsfile.server-rcptt-test sernet.gs.service.tests sernet.verinice.report.service
LICENSE sernet.gs.springweb.fragment sernet.verinice.samt.rcp
mvnw sernet.gs.ui.rcp.main sernet.verinice.samt.service
mvnw.cmd sernet.gs.ui.rcp.main.tests target-platform
notes sernet.hui.common TCOracle.pdf
org.eclipse.e4.rcp.sernet sernet.hui.swtclient verinice-distribution
pom.xml sernet.localdependencies verinice-gui-tests
README.md sernet.rcp.ui.feature waffle
SECURITY.md sernet.springclient

Java integrieren

JRE integrieren
sernet.verinice.extraresources.feature/linux/jre
sernet.verinice.extraresources.feature/windows/jre
sernet.verinice.extraresources.feature/macos/jre
Erforderlich für macOS-Builds
  • Es ist best practice, eine JRE in einen Application.app Ordner zu packen.
  • Um eine gültige verinice.app zu erhalten, muss daher eine geeignete macOS JRE in sernet.thirdparty.feature/macos vorhanden sein.
Linux
$ mkdir -p sernet.verinice.extraresources.jre_linux_64/jre 
$ cp -Lr $JAVA_HOME* sernet.verinice.extraresources.jre_linux_64/jre/
$ ls sernet.verinice.extraresources.jre_linux_64/jre
bin conf docs legal lib man release
Windows
# mkdir -p sernet.verinice.extraresources.jre_win_64/jre
$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip -P /tmp
$ unzip /tmp/openjdk-11.0.2_windows-x64_bin.zip -d /tmp/openjdk-11.0.2_windows-x64_bin
$ cp -Lr /tmp/openjdk-11.0.2_windows-x64_bin/jdk-11.0.2/* sernet.verinice.extraresources.jre_win_64/jre
$ ls sernet.verinice.extraresources.jre_win_64/jre
bin conf include jmods legal lib release
MacOS
# mkdir -p sernet.verinice.extraresources.jre_macos_64/jre
$ wget  https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_osx-x64_bin.tar.gz -P /tmp
$ mkdir /tmp/openjdk-11.0.2_osx-x64_bin; tar --directory=/tmp/openjdk-11.0.2_osx-x64_bin -xf /tmp/openjdk-11.0.2_osx-x64_bin.tar.gz
$ cp -Lr /tmp/openjdk-11.0.2_osx-x64_bin/jdk-11.0.2.jdk/Contents/Home/* sernet.verinice.extraresources.jre_macos_64/jre
$ ls sernet.verinice.extraresources.jre_macos_64/jre/
bin conf include jmods legal lib release

Hinweise zu Versionen

Verinice 1.23.1

In der Datei sernet.gs.server/pom.xml alle http: durch https: ersetzen

# sed -i 's/http:/https:/g' sernet.gs.server/pom.xml

Kompilieren

Umgebung bereinigen
$ rm -r ~/.m2/
Verinice-Client, Client-Update-Site und Server kompilieren
$ cd /usr/src/verinice
/usr/src/verinice $ ./mvnw -Dtycho.disableP2Mirrors=true -DskipTests clean verify
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] sernet.verinice.tycho.root 1.26.0-SNAPSHOT ......... SUCCESS [ 0.440 s]
[INFO] target-platform 1.26.0-SNAPSHOT .................... SUCCESS [ 0.078 s]
[INFO] jbpm 4.4.1 ......................................... SUCCESS [ 5.611 s]
[INFO] org.eclipse.e4.rcp.sernet 1.26.0-SNAPSHOT .......... SUCCESS [ 5.949 s]
[INFO] sernet.birt.feature 1.26.0-SNAPSHOT ................ SUCCESS [ 20.496 s]
[INFO] sernet.datatools.feature 1.26.0-SNAPSHOT ........... SUCCESS [ 6.688 s]
[INFO] sernet.eclipse.feature 1.26.0-SNAPSHOT ............. SUCCESS [ 5.607 s]
[INFO] sernet.gs.db.fragment 1.26.0-SNAPSHOT .............. SUCCESS [ 0.132 s]
[INFO] sernet.gs.ehcache.fragment 1.26.0-SNAPSHOT ......... SUCCESS [ 0.075 s]
[INFO] sernet.gs.hibernate.fragment 1.26.0-SNAPSHOT ....... SUCCESS [ 0.053 s]
[INFO] sernet.gs.log4j.fragment 1.26.0-SNAPSHOT ........... SUCCESS [ 0.021 s]
[INFO] sernet.gs.pax_web.fragment 1.26.0-SNAPSHOT ......... SUCCESS [ 1.286 s]
[INFO] sernet.gs.reveng 1.26.0-SNAPSHOT ................... SUCCESS [ 5.958 s]
[INFO] sernet.hui.common 1.26.0-SNAPSHOT .................. SUCCESS [ 3.534 s]
[INFO] sernet.gs.service 1.26.0-SNAPSHOT .................. SUCCESS [ 6.184 s]
[INFO] sernet.hui.swtclient 1.26.0-SNAPSHOT ............... SUCCESS [ 3.519 s]
[INFO] sernet.springclient 1.26.0-SNAPSHOT ................ SUCCESS [ 29.967 s]
[INFO] sernet.gs.ui.rcp.main 1.26.0-SNAPSHOT .............. SUCCESS [ 32.955 s]
[INFO] sernet.verinice.oda.driver 1.26.0-SNAPSHOT ......... SUCCESS [ 1.346 s]
[INFO] sernet.verinice.samt.service 1.26.0-SNAPSHOT ....... SUCCESS [ 0.304 s]
[INFO] sernet.verinice.report.service 1.26.0-SNAPSHOT ..... SUCCESS [ 3.574 s]
[INFO] sernet.verinice.fei.service 1.26.0-SNAPSHOT ........ SUCCESS [ 0.246 s]
[INFO] sernet.gs.server 1.26.0-SNAPSHOT ................... SUCCESS [ 47.196 s]
[INFO] sernet.gs.server.feature 1.26.0-SNAPSHOT ........... SUCCESS [ 0.075 s]
[INFO] sernet.gs.springweb.fragment 1.26.0-SNAPSHOT ....... SUCCESS [ 0.018 s]
[INFO] sernet.localdependencies 1.26.0-SNAPSHOT ........... SUCCESS [ 0.009 s]
[INFO] sernet.verinice.fei.rcp 1.26.0-SNAPSHOT ............ SUCCESS [ 2.011 s]
[INFO] sernet.verinice.samt.rcp 1.26.0-SNAPSHOT ........... SUCCESS [ 1.956 s]
[INFO] sernet.verinice.desktop.integration 1.26.0-SNAPSHOT SUCCESS [ 0.319 s]
[INFO] waffle 1.7.4 ....................................... SUCCESS [ 0.065 s]
[INFO] sernet.verinice.kerberos 1.26.0-SNAPSHOT ........... SUCCESS [ 0.424 s]
[INFO] sernet.rcp.ui.feature 1.26.0-SNAPSHOT .............. SUCCESS [ 0.089 s]
[INFO] sernet.thirdparty.feature 1.26.0-SNAPSHOT .......... SUCCESS [ 6.551 s]
[INFO] sernet.verinice.lang.feature 1.26.0-SNAPSHOT ....... SUCCESS [ 12.515 s]
[INFO] sernet.verinice.extraresources.jre_linux_64 1.26.0-SNAPSHOT SUCCESS [ 4.896 s]
[INFO] sernet.verinice.extraresources.jre_win_64 1.26.0-SNAPSHOT SUCCESS [ 3.795 s]
[INFO] sernet.verinice.extraresources.jre_macos_64 1.26.0-SNAPSHOT SUCCESS [ 3.779 s]
[INFO] sernet.verinice.extraresources.feature 1.26.0-SNAPSHOT SUCCESS [ 0.042 s]
[INFO] sernet.verinice.app.feature 1.26.0-SNAPSHOT ........ SUCCESS [ 0.107 s]
[INFO] sernet.verinice.releng.client.product 1.26.0-SNAPSHOT SUCCESS [01:52 min]
[INFO] sernet.verinice.releng.server.product 1.26.0-SNAPSHOT SUCCESS [ 25.027 s]
[INFO] sernet.gs.server.tests 1.26.0-SNAPSHOT ............. SUCCESS [ 16.057 s]
[INFO] sernet.gs.service.tests 1.26.0-SNAPSHOT ............ SUCCESS [ 3.761 s]
[INFO] sernet.gs.ui.rcp.main.tests 1.26.0-SNAPSHOT ........ SUCCESS [ 9.020 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 09:38 min
[INFO] Finished at: 2023-05-29T09:56:59+02:00
[INFO] ------------------------------------------------------------------------

Client

Kompilate Programme befinden sich in

sernet.verinice.releng.client.product/target/products/
Es werden Artefakte für die folgenden Plattformen erzeugt
  • Linux GTK 64 bit
  • Windows 64 bit
  • Mac OS X 64 bit

Update-Site

Die P2-Update-Site befindet sich in

sernet.verinice.update_site/target/repository

Server

Die WAR-Datei (die z. B. auf Tomcat bereitgestellt werden kann) befindet sich unter

sernet.verinice.releng.server.product/target/

Die WAR-Datei ist plattformunabhängig

  • im Gegensatz zu den Verinice-Client- und Report-Designer-Builds

Update

Backup
# apt install pigz
$ cd /usr/src/
/usr/src/ $ tar -cf verinice_$(date +%Y-%m-%d-%H%M%S).tar.gz -I pigz verinice/
Umgebung bereinigen
$ rm -r ~/.m2/
Quellen aktualisieren
$ cd /usr/src/verinice
/usr/src/verinice $ git pull
Kompilation

siehe #Kompilieren

Versionierung

Aktualisieren der Version des Projekts

1. Version setzen
./mvnw -Dtycho.mode=maven -DnewVersion=x.y.z.qualifier tycho-versions:set-version
Hinweis
  • qualifier ist wörtlich gemeint
  • wird von tycho/osgi als magische Zeichenkette behandelt
./mvnw -DnewVersion=1.19.0.qualifier tycho-versions:set-version

schreibt 1.19.0-SNAPSHOT in die Update pom.xml Dateien und 1.19.0.qualifier in die aktualisierten feature.xml Dateien.

Die endgültige Produktversion erhält einen Zeitstempel, z.B.*1.19.0.201908011226
2. Version und Codename
Aktualisieren Sie Version und Codename

im About-Text in Branding > About Dialog von

sernet.verinice.releng.client.product/sernet.verinice.releng.client.product
3. About-Text
Synchronisieren Sie den About-Text

wieder mit dem Plugin (Übersicht > Testen > Synchronisieren) in

sernet.verinice.releng.client.product/sernet.verinice.releng.client.product.
4. Versionsmakro in Handbüchern
Aktualisieren Sie das Versionsmakro in den Handbüchern
5. Splash-Screen
Aktualisieren Sie die Version in den Splash-Screens von verinice
sernet.gs.ui.rcp.main/etc/splashscreen/splash.xcf

Anhang

Siehe auch


Dokumentation

Links

Projekt
  1. https://github.com/SerNet/verinice
Weblinks