Zwiększ limit czasu logowania Jenkins


86

Czy ktoś wie, jak zwiększyć limit czasu, zanim Jenkins wyloguje użytkownika? Chcę go podnieść do 1 dnia lub więcej.

Pracuję w Jenkinsie przez cały dzień i ciągle wylogowuję się między kolejnymi pracami. Co więcej, pole wyboru „pozostań zalogowany” również nie działa.


Jaka wersja Jenkinsa? Wystąpił błąd Jenkinsa związany z plikami cookie logowania: Issues.jenkins-ci.org/browse/JENKINS-16278 . Nawet jeśli nie dotyczy Twojej wersji, warto przeczytać komentarze dotyczące rozwiązywania problemów w tym błędzie. Ten błąd wskazuje również, że domyślny limit czasu pliku cookie logowania wynosi 14 dni.
Dave Bacher

@DaveBacher korzystamy z wersji 1.567 i na pewno nie dostaniemy 14 dni logowania :)
Ray

@DaveBacher Przetestowałem zapamiętaj mnie z szybkim zabiciem klienta przeglądarki po 10 minutach logowania w chrome i firefox i działa, więc myślę, że wylogowanie jest wymuszone i łamie pamięć o mnie.
Ray

Odpowiedzi:


73

Jenkins używa Jetty, a domyślny limit czasu Jetty to 30 minut . Jest to niezależne od ustawień uwierzytelniania - używam usługi Active Directory, ale nadal to ustawienie wpływa na limity czasu.

Limit czasu można zmienić, przekazując argument --sessionTimeout=<minutes>do skryptu inicjującego Jenkins lub -DsessionTimeout=<minutes>do pliku .war. Na przykład:

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

Alternatywnie możesz edytować Jenkinsa <jenkinsHome>/.jenkins/war/WEB-INF/web.xmli dodać jawnie go ustawić:

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

Zgodnie z dokumentacją Oracle można ustawić to na 0, aby całkowicie wyłączyć limity czasu.

Aby poznać aktualną wartość limitów czasu, możesz użyć konsoli Groovy dostarczonej w Jenkins:

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

W moim przypadku to widać Result: 30.


2
Wygląda na to, że argument powinien być --sessionTimeout=<minutes>(zwróć uwagę na znak równości).
Rob I

3
gdzie jest WEB-INFkatalog?
bubakazouba

4
@bubakazouba W moim systemie Debian znajduje się w / var / cache / jenkins / war /. W systemie Windows 7 znajduje się w C: \ Program Files (x86) \ Jenkins \ war \
Sir Jane,

2
Nie udało mi się uruchomić DsessionTimeout, ale sesja sessionTimeout działała.
Elijah Lynn

2
Od wersji Jenkins 2.107.2 samo ustawienie tej wartości nie wystarczy. Sprawdź komentarz @jhuffaker do tego pytania.
Fholst,

30

Od wersji Jenkins 2.107.2 będziesz chciał dołączyć sessionEviction

Na przykład, aby utrzymać ludzi zalogowanych przez 24 godziny i 12 godzin bezczynności:

--sessionTimeout=1440 --sessionEviction=43200

Jeśli nie określisz sessionEviction, osoby, które zamkną kartę, zostaną wylogowane po 30 minutach.


2
Prąd sessionTimeoutmożna sprawdzić w groovy konsoli za pomocą Stapler.getCurrentRequest().getSession().getMaxInactiveInterval() / 60. Czy wiesz, jak uzyskać / ustawić sessionEvictionw groovy konsoli?
wim

10
Możesz potwierdzić czas bezczynności eksmisji w następujący sposób: import org.kohsuke.stapler.Stapler; sess = Stapler.getCurrentRequest (). getSession (); printf ("sessionTimeout:% d sekund \ n", sess.getMaxInactiveInterval ()); printf ("sessionEviction:% d sekund \ n", sess.getSessionHandler (). getSessionCache (). getEvictionPolicy ());
kmaehashi

3
Dziękuję Ci! To dręczy mnie od ponad roku i do tej pory nigdy nie natknąłem się na ten --sessionEvictionargument.
richid

Idealnie, to wyjaśnia, dlaczego limit czasu sesji nie wydaje się działać sam.
insideClaw

12

Od wersji 1.528 możesz używać tego --sessionTimeout <minutes>parametru podczas uruchamiania jenkinsa za pomocą skryptu init. Jeśli zaczynasz wojnę, podaj-DsessionTimeout=<minutes>

Aktualizacja do wersji 1.6.0

Jeśli przekazujesz jako argument, użyj --sessionTimeout=<minutes>


To jest mój proces Jenkinsa. Ale nadal upływa czas poniżej 10 minut. Co jest nie tak? "java -Dcom.sun.akuma.Daemon = daemonized -Djava.awt.headless = true -Xmx6144m -Xms2048m -XX: MaxPermSize = 512m -XX: + CMSClassUnloadingEnabled -XX: + UseConcMarkSweepGC -Dhudson.diyChunkENK = false / 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

Wygląda na to, że rozpoczynasz wojnę. Spróbuj -DsessionTimeout=600
wejść

2
Wygląda na to, że argumentem do jenkinsa 1.6 powinien być --sessionTimeout=<minutes>(zwróć uwagę na znak równości).
Rob I

1
Tak, masz rację. Wykorzystanie dla 1.628 pokazuje Usage: java -jar jenkins.war [--option=value] [--option=value]dzięki!
cesar

11

wydaje się również możliwe ustawienie tego za pomocą groovy konsoli:

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

Ale myślę, że będzie dostępny tylko dla bieżącej sesji


1
Użyłem tego podejścia i przekazałem zero do metody, aby wyłączyć limity czasu sesji dla mojej bieżącej sesji.
jstricker

To działało świetnie w bieżącej sesji. Czy istnieje sposób na zmianę tych ustawień dla wszystkich sesji przy użyciu konsoli Groovy?
Yuri Brovman

10

W przypadku Ubuntu:

nano /etc/default/jenkins

Dołącz do JENKINS_ARGS na końcu pliku:

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

1
Doskonale, jedyna odpowiedź, jaką widziałem na ten temat, mówi również, gdzie te parametry mają być zastosowane. Można to zweryfikować za pomocą powyższego kodu @ kmaehashi.
insideClaw

4

Ta wersja Jenkinsa 1.567 ma również opcję włączania automatycznego odświeżania, więc w jakiś sposób odświeża sesję i nigdy się nie wylogowuję. Mi to pasuje...


4

W mojej dystrybucji Linuksa to ustawienie można dodać do / etc / sysconfig / jenkins

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

Następnie uruchom ponownie za pomocą

sudo /etc/init.d/jenkins restart

0

Jeśli Jenkins działa jako usługa Windows ( jenkins.exe), parametry można edytować w jenkins.xmlkatalogu instalacyjnym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.