Verinice/Kompilieren
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
- Siehe [Plugin-Dokumentation](https://www.eclipse.org/tycho/sitedocs/tycho-packaging-plugin/plugin-info.html) für Details.
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