Erhöhen Sie das Jenkins-Anmeldezeitlimit


84

Weiß jemand, wie man das Timeout-Fenster vergrößert, bevor Jenkins einen Benutzer abmeldet? Ich möchte es auf 1 Tag oder so erhöhen.

Ich arbeite den ganzen Tag in Jenkins und wir werden zwischen den laufenden Jobs immer wieder abgemeldet. Zusätzlich zu dieser Frustration scheint das Kontrollkästchen "Angemeldet bleiben" ebenfalls nicht zu funktionieren.


Welche Version von Jenkins? Es gab einen Jenkins-Fehler im Zusammenhang mit Anmelde- Cookies: issue.jenkins-ci.org/browse/JENKINS-16278 . Auch wenn es nicht auf Ihre Version anwendbar ist, sollten Sie die Kommentare zur Fehlerbehebung in diesem Fehler lesen. Dieser Fehler weist auch darauf hin, dass das Standard-Timeout für Anmelde-Cookies 14 Tage beträgt.
Dave Bacher

@ DaveBacher wir laufen v1.567 und bekommen definitiv keine 14 Tage Login :)
Ray

@ DaveBacher Ich habe das Remember Me mit einem schnellen Kill des Browser-Clients getestet, nachdem ich mich 10 Minuten lang in Chrome und Firefox angemeldet hatte, und es funktioniert. Ich denke, das Abmelden wird erzwungen und bricht das Remember Me.
Ray

Antworten:


70

Jenkins verwendet Jetty und Jettys Standardzeitlimit beträgt 30 Minuten . Dies ist unabhängig von den Authentifizierungseinstellungen. Ich verwende Active Directory, aber diese Einstellung wirkt sich immer noch auf die Zeitüberschreitung aus.

Sie können das Zeitlimit überschreiben, indem Sie ein Argument --sessionTimeout=<minutes>an das Jenkins-Init-Skript oder -DsessionTimeout=<minutes>an die .war-Datei übergeben. Zum Beispiel:

# Set the session timeout to 1 week
$ java -jar jenkins.war --sessionTimeout=10080

Alternativ können Sie Jenkins bearbeiten <jenkinsHome>/.jenkins/war/WEB-INF/web.xmlund explizit festlegen:

<session-config>
  <!-- one hour -->
  <session-timeout>60</session-timeout>
</session-config>

Gemäß den Oracle-Dokumenten können Sie dies auf 0 setzen, um Zeitüberschreitungen insgesamt zu deaktivieren.

Um den aktuellen Wert für Zeitüberschreitungen zu ermitteln, können Sie die in Jenkins bereitgestellte Groovy-Konsole verwenden:

import org.kohsuke.stapler.Stapler;
Stapler.getCurrentRequest().getSession().getMaxInactiveInterval() / 60

In meinem Fall zeigt dies Result: 30.


2
Scheint so, als ob das Argument sein sollte --sessionTimeout=<minutes>(beachten Sie das Gleichheitszeichen).
Rob I

3
Wo ist das WEB-INFVerzeichnis?
Bubakazouba

4
@bubakazouba Auf meinem Debian-System befindet es sich in / var / cache / jenkins / war /. Unter Windows 7 befindet es sich in C: \ Programme (x86) \ Jenkins \ war \
Sir Jane

2
Ich konnte DsessionTimeout nicht zum Laufen bringen, aber sessionTimeout funktionierte.
Elijah Lynn

1
Ab Jenkins 2.107.2 reicht es nicht aus, diesen Wert allein festzulegen. Bitte überprüfen Sie @ jhuffaker Kommentar zu dieser Frage.
Fholst

29

Ab Jenkins Version 2.107.2 möchten Sie sessionEviction einbinden

Zum Beispiel, um Personen für 24 Stunden und 12 Stunden Inaktivität angemeldet zu halten:

--sessionTimeout=1440 --sessionEviction=43200

Wenn Sie keine sessionEviction angeben, werden Personen, die die Registerkarte schließen, nach 30 Minuten abgemeldet.


2
Der Strom sessionTimeoutkann in der groovigen Konsole mit überprüft werden Stapler.getCurrentRequest().getSession().getMaxInactiveInterval() / 60. Wissen Sie, wie man das sessionEvictionin die groovige Konsole bekommt / einstellt ?
wim

10
Sie können die Leerlaufzeit der Räumung folgendermaßen bestätigen: import org.kohsuke.stapler.Stapler; sess = Stapler.getCurrentRequest (). getSession (); printf ("sessionTimeout:% d Sekunden \ n", sess.getMaxInactiveInterval ()); printf ("sessionEviction:% d Sekunden \ n", sess.getSessionHandler (). getSessionCache (). getEvictionPolicy ());
Kmaehashi

3
Vielen Dank! Das plagt mich seit über einem Jahr und ich war --sessionEvictionbis jetzt noch nie auf diesen Streit gestoßen .
Richid

Perfekt, das erklärt, warum das Sitzungszeitlimit anscheinend nichts für sich tut.
insideClaw

12

Ab 1.528 können Sie den --sessionTimeout <minutes>Parameter beim Starten von Jenkins über ein Init-Skript verwenden. Wenn Sie den Krieg beginnen, gehen Sie vorbei-DsessionTimeout=<minutes>

Update für 1.6

Wenn Sie als Argument übergeben, verwenden Sie --sessionTimeout=<minutes>


Das ist mein Jenkins-Prozess. Trotzdem läuft es unter 10 Minuten ab. Was ist los? "java -Dcom.sun.akuma.Daemon = daemonized -Djava.awt.headless = true -Xmx6144m -Xms2048m -XX: MaxPermSize = 512m -XX: + CMSClassUnloadingEnabled -XX: + UseConcMarkSweepGC -DhudK = export / jenkins -jar /usr/lib/jenkins/jenkins.war --logfile = / var / log / jenkins / jenkins.log --webroot = / var / cache / jenkins / war --daemon --httpPort = 80 - -ajp13Port = 8009 --debug = 5 --handlerCountMax = 100 --handlerCountMaxIdle = 20 --sessionTimeout = 600 -Dorg.kohsuke.stapler.compression.CompressionFilter.disabled = true "
Baskar

Sieht so aus, als würden Sie den Krieg beginnen. Versuchen Sie im Vorbeigehen-DsessionTimeout=600
cesar

2
Scheint, als sollte das Argument zu Jenkins 1.6 lauten --sessionTimeout=<minutes>(beachten Sie das Gleichheitszeichen).
Rob I

1
Ja, du hast recht. Die Verwendung für 1.628 zeigt Usage: java -jar jenkins.war [--option=value] [--option=value]Danke!
Cesar

11

Es scheint auch möglich zu sein, es mit der groovigen Konsole einzustellen:

import org.kohsuke.stapler.Stapler;
Stapler.getCurrentRequest().getSession().setMaxInactiveInterval(TIME_IN_SECONDS)

Aber ich denke, es wird nur für die aktuelle Sitzung verfügbar sein


1
Ich habe diesen Ansatz verwendet und Null an die Methode übergeben, um Sitzungszeitlimits für meine aktuelle Sitzung zu deaktivieren.
Jstricker

Dies hat in der aktuellen Sitzung hervorragend funktioniert. Gibt es eine Möglichkeit, diese Einstellungen für alle Sitzungen mithilfe der Groovy-Konsole zu ändern?
Yuri Brovman

8

Für Ubuntu:

nano /etc/default/jenkins

An JENKINS_ARGS am Ende der Datei anhängen :

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --sessionTimeout=1440 --sessionEviction=43200"

1
Ausgezeichnet, die einzige Antwort, die ich zu diesem Thema gesehen habe, um auch zu sagen, wo diese Parameter angewendet werden sollen. Dies kann mit dem obigen Code von @ kmaehashi überprüft werden.
insideClaw

4

Diese Version von Jenkins 1.567 verfügt auch über die Option zum automatischen Aktualisieren aktivieren, sodass die Sitzung immer wieder aktualisiert wird und ich nie abgemeldet werde. Für mich geht das...


3

In meiner Linux-Distribution kann diese Einstellung zu / etc / sysconfig / jenkins hinzugefügt werden

# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="--sessionTimeout=480"

Starten Sie anschließend mit neu

sudo /etc/init.d/jenkins restart

0

Wenn Jenkins als Windows-Dienst ( jenkins.exe) ausgeführt wird, können Parameter jenkins.xmlim Installationsverzeichnis bearbeitet werden .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.