Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven für Debian auf Raspberry Pi.

Oder wie kann man ein *.deb Archive mit Maven Plugin erzeugen?
Oder wie verpackt man ein JAR in ein deb Archive, um es einfach auf einem Raspberr Pi zu installieren?
Oder wer braucht ein Template für das erzeugen von Maven Artefacten mit einer automatischen Pipeline in GitLab?
Oder wie validiere ich die Build-Scripte der Build-Pipeline?
Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab
Auf diese ua. Frage gibt dieser Blog-Artikel Auskunft.

Wir wollen eine Build-Pipeline mit mehreren Javaversionen, test und build bzw. deploy erstellen. Hier der Flow der Pipeline:

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

So sieht die Pipeline mit den drei Stages aus:

#
# Jobs für das Kaffee Projekt oder auch allgemein
# als Template für Maven Jobs für compile und build
# mit unterschiedlichen Java Versionen
#
# Thomas Wenzlaff http://www.wenzlaff.info
#

#
# Die Jobs der Pipeline
#
stages:
  - compile
  - test
  - build

#
# Macht ein Maven clean compile Java 8
# 
Java-8 compile Job:
   stage: compile
   image: maven:3-jdk-8
   script:   
   - mvn clean compile -B
   
#
# Macht ein Maven clean compile Java 9
# 
Java-9 compile Job:
   stage: compile
   image: maven:3-jdk-9
   script:   
   - mvn clean compile -B
   
#
# Macht ein Maven clean compile Java 10
# 
Java-10 compile Job:
   stage: compile
   image: maven:3-jdk-10
   script:   
   - mvn clean compile -B
   
#
# Macht ein Maven clean compile Java 11
# 
Java-11 compile Job:
   stage: compile
   image: maven:3-jdk-11
   script:   
   - mvn clean compile -B
   
#
# Macht ein Maven Test Java 11
# 
Test Java-11 Job:
   stage: test
   image: maven:3-jdk-11
   script:   
   - mvn clean test -B
   
#
# Macht ein clean install mit deploy des deb Archives ins lokale Repo mit Java 11
#
Install Java 11:
   stage: build
   image: maven:3-jdk-11
   script:   
   - mvn clean install -B
   artifacts:
    paths:
      - target/*.deb

Ein YALM Script kann man leicht in GitLab validieren und testen.

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

Dazu einfach auch diesen Link im GitLab Projekt oben rechts klicken:

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

Es erscheint ein Validator Fenster, wo der Code leicht entwickelt und getestet werden kann:

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

So, jetzt erstellen wir die pom.xml um ein *.deb Archive für den Pi zu erhalten. Wir verwenden dazu da Plugin jdeb. Hier der relevante Auszug:

<plugin>
				<artifactId>jdeb</artifactId>
				<groupId>org.vafer</groupId>
				<version>1.3</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>jdeb</goal>
						</goals>

						<configuration>
							<!-- Der Ziel deb Name -->
							<deb>${project.build.directory}/${project.artifactId}-${project.version}.deb</deb>
							<!-- Das Verzeichnis mit der control Datei -->
							<controlDir>${basedir}/debian</controlDir>

							<dataSet>
								<!-- Programm JAR nur für root -->
								<data>
									<src>${project.build.directory}/${project.artifactId}-${project.version}-jar-with-dependencies.jar</src>
									<type>file</type>
									<mapper>
										<type>perm</type>
										<prefix>/usr/share/${project.artifactId}</prefix>
										<filemode>444</filemode>
										<user>root</user>
										<group>root</group>
									</mapper>
								</data>
								<!-- Start Script im User Verzeichnis von pi -->
								<data>
									<src>kaffee-start.sh</src>
									<type>file</type>
									<mapper>
										<type>perm</type>
										<prefix>/home/pi/${project.artifactId}</prefix>
										<filemode>700</filemode>
										<user>pi</user>
										<group>pi</group>								
									</mapper>
								</data>				
								<!-- Beispiel Daten im Excel Format -->
								<data>
									<src>kaffee.xlsx</src>
									<type>file</type>
									<mapper>
										<type>perm</type>
										<prefix>/home/pi/${project.artifactId}</prefix>
										<filemode>644</filemode>
										<user>pi</user>
										<group>pi</group>								
									</mapper>
								</data>								
							</dataSet>
						</configuration>
					</execution>
				</executions>
			</plugin>

Wenn die Build-Pipeline durchgelaufen ist, kann das *.deb Archive von der GitLab Seite) geladen werden:

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

Weitere Details siehe im Beispiel Projekt (https://gitlab.com/IT-Berater/twkaffee.

Nach dem Download kann das artifacts.zip entpackt werden. Dort ist dann das *.deb Archive enthalten. Das dann auf den Pi kopieren und ein sudo dpkg -i twkaffee-0.0.1.deb ausführen:

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

Oder wenn man sich zuvor den Inhalt anschauen will, ein sudo dpkg-deb –contents twkaffee-0.0.1.deb

Build Pipeline mit YAML Script zum erzeugen eines *.deb Archives mit Maven und jdeb für Debian auf Raspberry Pi mit GitLab

Will man alles wieder entfernen geht das einfach mit: sudo dpkg -r twkaffee Achtung, da nicht den Packagenamen mit Version angeben, sondern den Namen des Programm.

Ähnliche Artikel:

  1. Raspberry Pi FreeMarker Java and Maven Project goes to 去 يذهب إلى GibLab and not to GitHub
  2. Wie können alle transitiven Abhängigkeiten eines Projektes mit Maven angezeigt werden?
  3. Anzeigen aller benutzten und ungenutzen Abhängigkeiten mit Maven.