Forum: PC-Programmierung Jenkins auf Raspberry PI 3: Admin Unlock nicht möglich


von Bernd (Gast)


Lesenswert?

Hallo,

ich versuche gerade mich mit den Grundkonzepten von "Continuous 
Integration" zu befassen. Als erstes Ziel habe ich mir gesetzt, eine 
überschaubare Bastelumgebung auf Basis eines Raspberry Pi Model 3
zu schaffen, auf dem ein Jenkins-Server läuft und ein simples 
Hello-World baut. Raspberry Pi deshalb, weil ich einen physikalisch 
getrennten und entfernten Knecht simulieren will, den ich über SSH oder 
remote-desktop bedienen muss (Das Ding kann ich jederzeit abschießen und 
neu aufsetzen. Rechenleistung ist hier kaum ausschlaggebend)


1) Ich habe hier ein Heim-Netzwerk. An dem Router hängt mein Haupt-PC 
mit Win7 und der Raspi. Adressbereich: 192.168.178.x
2) Eine SSH & RDP-Verbindung zwischen Win7-PC und Raspi funktioniert 
einwandfrei

3) Zunächst habe ich JAVA auf die Raspi auf folgende Version 
hochgezogen:
1
java -version
2
3
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
4
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)
4) Dann habe ich Jenkins installiert
1
sudo apt-get install jenkins
Ist durchgelaufen ohne Fehlermeldungen
5) Der Jenkins-Service scheint aber nicht komplett zu laufen:
1
systemctl status jenkins.service
2
3
jenkins.service - LSB: Start jenkins at boot time
4
Loaded: loaded (/etc/init.d/jenkins; generated; vendor preset: enabled)   
5
Active: active (exited) since Sun 2018-01-21 12:04:33 CET; 2h 9min ago     
6
Docs: man:systemd-sysv-generator(8)  
7
Process: 439 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCES  
8
CGroup: /system.slice/jenkins.service
9
Jan 21 12:04:32 pi_box1 systemd[1]: Starting LSB: Start jenkins at boot time..
10
Jan 21 12:04:33 pi_box1 su[483]: Successful su for jenkins by root
11
Jan 21 12:04:33 pi_box1 su[483]: + ??? root:jenkins
12
Jan 21 12:04:33 pi_box1 su[483]: pam_unix(su:session): session opened for user
13
Jan 21 12:04:33 pi_box1 jenkins[439]: Starting Jenkins Continuous Integration 
14
Jan 21 12:04:33 pi_box1 systemd[1]: Started LSB: Start jenkins at boot time.

Ich hätte da "Active: active (running) statt (exited) erwartet!


6) Der Webservice scheint komischerweise zu laufen:
http://127.0.0.1:8080/
--> Das Jenkins-Dashboard via Web-Browser des Raspis wird angezeigt.
Der Zugriff ist gegenwärtig nur (!) über den Raspi möglich, der Win7-PC 
sieht den Webservice hingegen nicht.

7) Die Log-Datei unter /var/log/jenkins
wirf mir folgendes entgegen:

Da ist auch noch was falsch
1
Jan 21, 2018 1:42:08 PM jenkins.InitReactorRunner$1 onAttained
2
INFO: Listed all plugins
3
Jan 21, 2018 1:42:09 PM jenkins.InitReactorRunner$1 onAttained
4
INFO: Prepared all plugins
5
Jan 21, 2018 1:42:09 PM jenkins.InitReactorRunner$1 onAttained
6
INFO: Started all plugins
7
Jan 21, 2018 1:42:09 PM jenkins.InitReactorRunner$1 onAttained
8
INFO: Augmented all extensions
9
Jan 21, 2018 1:42:09 PM jenkins.InitReactorRunner$1 onAttained
10
INFO: Loaded all jobs
11
Jan 21, 2018 1:42:15 PM jenkins.diagnosis.HsErrPidList <init>
12
WARNING: Failed to list up hs_err_pid files
13
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-arm/libjnidispatch.so) not found in resource path ([file:/run/jenkins/war/WEB-INF/classes/,  /*gekürzt*/
14
  at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:803)
15
  at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:763)
16
  at com.sun.jna.Native.<clinit>(Native.java:131)
17
  at com.sun.akuma.CLibrary.<clinit>(CLibrary.java:89)
18
  at com.sun.akuma.JavaVMArguments.resolvePID(JavaVMArguments.java:126)
19
  at com.sun.akuma.JavaVMArguments.ofLinux(JavaVMArguments.java:114)
20
  at com.sun.akuma.JavaVMArguments.of(JavaVMArguments.java:104)
21
  at com.sun.akuma.JavaVMArguments.current(JavaVMArguments.java:92)
22
  at jenkins.diagnosis.HsErrPidList.<init>(HsErrPidList.java:62)
23
  at jenkins.diagnosis.HsErrPidList$$FastClassByGuice$$b61c3f44.newInstance(<generated>)
24
  at net.sf.cglib.reflect.FastConstructor.newInstance(FastConstructor.java:40)
25
  at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
26
  at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108)
27
  at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:88)
28
  at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:269)
29
  at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
30
  at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1066)
31
  at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
32
  at com.google.inject.Scopes$1$1.get(Scopes.java:65)
33
  at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:429)
34
  at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
35
  at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1009)
36
  at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059)
37
  at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1005)
38
  at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:391)
39
  at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:382)
40
  at hudson.ExtensionFinder._find(ExtensionFinder.java:151)
41
  at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:341)
42
  at hudson.ExtensionList.load(ExtensionList.java:295)
43
  at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248)
44
  at hudson.ExtensionList.iterator(ExtensionList.java:138)
45
  at hudson.ExtensionList.get(ExtensionList.java:129)
46
  at hudson.diagnosis.NullIdDescriptorMonitor.verifyId(NullIdDescriptorMonitor.java:86)
47
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
48
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
49
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
50
  at java.lang.reflect.Method.invoke(Method.java:497)
51
  at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:105)
52
  at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:169)
53
  at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
54
  at jenkins.model.Jenkins$7.runTask(Jenkins.java:901)
55
  at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
56
  at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
57
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
58
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
59
  at java.lang.Thread.run(Thread.java:745)
60
61
Jan 21, 2018 1:42:18 PM jenkins.InitReactorRunner$1 onAttained
62
INFO: Completed initialization
63
Jan 21, 2018 1:42:18 PM hudson.TcpSlaveAgentListener <init>
64
INFO: JNLP slave agent listener started on TCP port 37855
65
Jan 21, 2018 1:42:18 PM hudson.WebAppMain$3 run
66
INFO: Jenkins is fully up and running
67
Jan 21, 2018 1:42:18 PM jenkins.model.Jenkins <init>
68
INFO: Effective SlaveRestarter on master: null


8) Allerdings erscheint im Web-Interface nicht die erstmalige 
Admin-Freischaltung
(wie unter 
https://www.techcoil.com/blog/how-i-setup-jenkins-on-my-raspberry-pi-3-with-raspbian-stretch-lite/) 
erläutert

Was mache ich falsch?
Für mich sieht das so aus, als ob der Jenkins-Server noch nicht 
vollständig mit allen erforderlichen Komponenten läuft.

von Jim M. (turboj)


Lesenswert?

Bernd schrieb:
> 6) Der Webservice scheint komischerweise zu laufen:
> http://127.0.0.1:8080/

Alle Services die an 127.0.0.1 lauschen sind nur lokal ansprechbar. Sie 
müssten entweder an 0.0.0.0 oder der Netzwer-IP lauschen um im Netzwerk 
ansprechbar zu sein.

Alternative: Tunnel via SSH.

Bernd schrieb:
> Java(TM) SE Runtime Environment (build 1.8.0_65-b17)

Aktuell ist 1.8U161. Eventuell ist die alte Version Dein Problem, aber 
Du kanns natürlich mal nach der fehlenden libjnidispatch.so suchen.

von T.roll (Gast)


Lesenswert?

Bernd schrieb:
> Ich hätte da "Active: active (running) statt (exited) erwartet!

Nein. Der Startprozess hat jenkins erfolgreich gestartet 
(status=0/SUCCES) und sich selbst (der Startprozess!) daher korrekt 
beendet.

von Sheeva P. (sheevaplug)


Lesenswert?

Bernd schrieb:
>
1
> Process: 439 ExecStart=/etc/init.d/jenkins start (code=exited, 
2
> status=0/SUCCES
3
>
>
> Ich hätte da "Active: active (running) statt (exited) erwartet!

Das ist das Startskript in /etc/init.d/ -- das startet den Prozeß und 
beendet sich dann, wie sich das gehört.

> 6) Der Webservice scheint komischerweise zu laufen:
> http://127.0.0.1:8080/
> --> Das Jenkins-Dashboard via Web-Browser des Raspis wird angezeigt.
> Der Zugriff ist gegenwärtig nur (!) über den Raspi möglich, der Win7-PC
> sieht den Webservice hingegen nicht.

Aber nur auf 127.0.0.1, also localhost. Daß Du darauf nicht ohne 
Weiteres (wie einen SSH-Tunnel) von einer entfernten Maschine zugreifen 
kannst, ist ebenfalls absolut korrekt.

>
1
> Jan 21, 2018 1:42:15 PM jenkins.diagnosis.HsErrPidList <init>
2
> WARNING: Failed to list up hs_err_pid files
3
> java.lang.UnsatisfiedLinkError: Native library 
4
> (com/sun/jna/linux-arm/libjnidispatch.so) not found in resource path 
5
> ([file:/run/jenkins/war/WEB-INF/classes/,  /*gekürzt*/

sudo apt-get install libjna-java
1
> INFO: Jenkins is fully up and running
2
>

Ich würde sagen, er läuft.

> 8) Allerdings erscheint im Web-Interface nicht die erstmalige
> Admin-Freischaltung
> (wie unter
> 
https://www.techcoil.com/blog/how-i-setup-jenkins-on-my-raspberry-pi-3-with-raspbian-stretch-lite/)
> erläutert
>
> Was mache ich falsch?
> Für mich sieht das so aus, als ob der Jenkins-Server noch nicht
> vollständig mit allen erforderlichen Komponenten läuft.

Für mich sieht es so aus, als würde Dein Jenkins mit Ausnahme der 
fehlenden Bibliothek libjna-java korrekt laufen. Warum die 
Admin-Freischaltung nicht kommt, kann ich Dir nicht sagen -- 
möglicherweise hängt es ja mit dieser fehlenden Bibliothek zusammen? 
Vielleicht gibt es hier ja jemanden mit Jenkins-Erfahrung, der diesen 
Punkt beantworten kann.

von Bernd (Gast)


Lesenswert?

Danke für eure Ratschläge.

>Aktuell ist 1.8U161. Eventuell ist die alte Version Dein Problem, aber
>Du kanns natürlich mal nach der fehlenden libjnidispatch.so suchen.
"
Ich war bislang noch nicht in der Lage, über Java(TM) SE Runtime 
Environment build 1.8.0_65-b17" hinauszupatchen. Mir ist noch nicht 
klar, wie ich apt-get dazu überreden kann.


>Nein. Der Startprozess hat jenkins erfolgreich gestartet
>(status=0/SUCCES) und sich selbst (der Startprozess!) daher korrekt
>beendet.

>Das ist das Startskript in /etc/init.d/ -- das startet den Prozeß und
>beendet sich dann, wie sich das gehört.

Ok, das Konzept war mir noch nicht bekannt.

>sudo apt-get install libjna-java
Ist bereit drauf und offenbar uptodate.

------

Ich hab jetzt noch einen weiteren, unzerbastelten Raspi herangezogen um 
eventuelle Seiteneffekte ausschließen zu können, mit dem der Jenkins nun 
einwandfrei funktioniert. Den Problemlösungweg habe ich allerdings noch 
nicht komplett verstanden.

1) Raspbian apt-get update + apt-get upgrade
2) Java bleibt auf 1.8.0_65-b17, höher geht nicht
3)
wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo 
apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > 
/etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins -y

Mittels der neuen Keys wird statt Jenkins 1.??.?? ein Jenkins ver. 
2.89.3 installiert, mit dem der Betrieb ohne weitere Eingriffe 
funktioniert, inkl. Admin-Freischaltung. Der Server ist nun auch im 
Netzwerk vom Win7-PC aus sichtbar. Die Log-Datei unter /var/log/jenkins 
zeigt nun auch keine Fehler mehr an.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.