Gibt es eine Möglichkeit, die Java-JRE zu ändern, die ein Linux-Jenkins-Server verwendet?

8

Ein Jenkins-Server läuft unter Java 1.7 auf einem Linux-Computer und ich muss ihn auf 1.8 ändern, damit ich ein bestimmtes Plugin ausführen kann.

Auf dem Linux-Computer ist Java 1.8 JDK / JRE installiert, aber ich kann den Jenkins-Server nicht anweisen, es zu verwenden. Ich habe auf Windows-Servern Anleitungen dazu gefunden, aber nichts, was sich auf Linux Jenkins-Server bezieht oder auf diese überträgt.

Gibt es eine Möglichkeit, die vom Jenkins-Server unter Linux verwendete JRE zu ändern?

Wie eine Linux-Version davon: https://dzone.com/articles/make-jenkins-windows-service

ubergam3r
quelle

Antworten:

1

Klicken Sie auf der Jenkins-Hauptseite links auf "Jenkins verwalten". Rufen Sie das Menü "Globale Toolkonfiguration" auf, und unter diesem Menü befindet sich etwa auf halber Höhe eine Position, auf der "JDK-Installationen" stehen sollte. Klicken Sie auf diese Schaltfläche, um ein neues Menü zu öffnen, in dem Sie ein alternatives JDK hinzufügen können. Nach dem Hinzufügen gehen Sie in das Projekt, das Sie erstellen möchten, und klicken auf "Konfigurieren". Wiederum wird auf halber Strecke ein "JDK" -Dropdown angezeigt. Das neue JDK wird nun angezeigt und Sie können es auswählen, um Ihr Projekt zu erstellen.

Wenn Sie jedoch meinen, dass der gesamte Dienst von einer anderen VM ausgeführt werden soll, ist dies etwas schwieriger. Das Jenkins-Startskript wurde geschrieben, um zu versuchen, Ihre VM zu "erraten", damit die Installation über mehrere Linux-Varianten hinweg einfacher wird. Suchen Sie das Startskript (Red Hat RPM-Installation platziert es in /etc/rc.d/init.d/jenkins) und lesen Sie es durch. Sie werden einen Abschnitt mit der Überschrift „Kandidaten“ und Hinweise finden , wie die Schleife die möglichen JVMs durchläuft , die möglicherweise auf einem System sein. Sie können diese Liste so bearbeiten, dass sie nur die VM ist, die Sie verwenden möchten, und dann stoppen / starten, um sie zur Verwendung der gewünschten VM zu zwingen. Stellen Sie sicher, dass Sie das Skript kopieren, bevor Sie es bearbeiten, nur für den Fall.

Matakaheru
quelle
1

Abhängig von der Distribution haben Sie eine der Optionen "/ etc / sysconfig / jenkins" oder "/ etc / default / jenkins".

Dies hat eine Eigenschaft zum Festlegen des Java-Heimatorts. Normalerweise werden alle Optionen auskommentiert, um zu zeigen, was die Datei konfigurieren kann.

David Hutchison
quelle
0

Definieren Sie die JAVA_HOMEVariable:

Bearbeiten Sie /etc/profilemit Ihrem bevorzugten Texteditor.

export JAVA_HOME="path to java"
export PATH=$JAVA_HOME/bin:$PATH

Dann

source /etc/profile

um Änderungen anzuwenden.

remoteitguy
quelle
0

Dies ist spezifisch für die Macintosh-Installationsversion (zum Nutzen derjenigen, die wie ich durch eine Websuche hierher gebracht wurden), und der Pfad ist spezifisch für die Java-Version, die Jenkins ausführen möchte und die mit Java koexistieren muss Version, mit der wir testen müssen. Es ist hässlich, aber weniger hässlich als das, was da war (ein duplizierter, hartcodierter Pfad) oder als jeder andere Vorschlag, den ich finden konnte.

    Ich habe Folgendes am Anfang und Ende von hinzugefügt / geändert /Library/Application\ Support/Jenkins/jenkins-runner.sh:

javaBin=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java
…
echo $javaBin $javaArgs -jar "$war" $args
exec $javaBin $javaArgs -jar "$war" $args

Es wäre sicherlich schöner, wenn dies eine Einstellung org.jenkins-ci.plistwäre, aber das würde immer noch Änderungen erfordern jenkins-runner.sh, also war dies die minimale Änderung für unsere Zwecke.

Flash Sheridan
quelle
0

Eine Möglichkeit, dies zu erreichen, besteht darin, die Startdatei zu bearbeiten : /etc/init.d/jenkins .

Die Standardeinstellung ist, nur ausgeführt zu javawerden und sich dabei auf die Umgebungsvariable PATH zu verlassen. Sie können eine benutzerdefinierte ausführbare Java-Datei angeben, indem Sie die Zeile bearbeiten:

`/etc/init.d/jenkins`

zu:

JAVA='/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java'

Sie müssen dann ausgeführt systemctl daemon-reloadwerden, damit die Änderungen übernommen werden.

Dies war, was ich tun musste, damit Jenkins Java 8 auf einem Ubuntu-System mit Java 11 als Standard verwendet. Es war für mich nicht akzeptabel, nur apt remove openjdk-11-jdk-headlessoder update-alternatives --config javaund Java 8 als Standard zu wählen. Die Einschränkung beim Bearbeiten der Startdatei besteht darin, dass sie möglicherweise überschrieben wird, wenn Jenkins aktualisiert wird: Ich muss sie im Auge behalten.

simlev
quelle
0

Dies ist für Windows-Benutzer, die zufällig über diese Frage stolpern (wie ich). Sie müssen die Systemumgebungsvariable JAVA_HOME festgelegt haben.

  1. jenkins service stoppen
  2. im jenkins-Basisordner bearbeiten jenkins.xml bearbeiten - in dieser Zeile "% JAVA_HOME% \ jre \ bin \ java"% BASE% in% JAVA_HOME% ändern

    % JAVA_HOME% \ jre \ bin \ java -Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -jar "% BASE% \ jenkins.war" --httpPort = 8080 --webroot = "% BASE% \ war"

  3. Jenkins starten

Barry MSIH
quelle