Jenkins 로그인 시간 제한 늘리기


84

Jenkins가 사용자를 로그 아웃하기 전에 시간 초과 창을 늘리는 방법을 아는 사람이 있습니까? 1 일 정도 올리려고합니다.

나는 하루 종일 젠킨스에서 일하고 일하며 작업을 실행하는 사이에 계속 로그 아웃됩니다. 이 좌절감에 더해 '로그인 상태 유지'확인란도 작동하지 않는 것 같습니다.


어떤 버전의 Jenkins? 로그인 쿠키와 관련된 Jenkins 버그가 있습니다 : issues.jenkins-ci.org/browse/JENKINS-16278 . 사용중인 버전에 해당되지 않더라도 해당 버그의 문제 해결 주석을 읽어 보는 것이 좋습니다. 이 버그는 또한 기본 로그인 쿠키 시간 제한이 14 일임을 지적합니다.
Dave Bacher 2014 년

@DaveBacher 우리는 v1.567을 실행하고 있고 확실히 14 일의 로그인을받지 못하고 있습니다. :)
Ray

@DaveBacher 크롬과 파이어 폭스에서 10 분 동안 로그인 한 후 브라우저 클라이언트를 빠르게 죽여서 나를 기억하도록 테스트했는데 작동하므로 로그 아웃이 강제되고 나를 기억하지 못하는 것 같습니다.
Ray

답변:


71

Jenkins는 Jetty를 사용하고 Jetty의 기본 제한 시간은 30 분 입니다. 이것은 인증 설정과 무관합니다. Active Directory를 사용하지만 시간 제한에 영향을 미치는 것은 여전히이 설정입니다.

--sessionTimeout=<minutes>Jenkins init 스크립트 또는 -DsessionTimeout=<minutes>.war 파일에 인수 를 전달하여 시간 제한을 재정의 할 수 있습니다 . 예를 들면 :

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

또는 Jenkins를 편집 <jenkinsHome>/.jenkins/war/WEB-INF/web.xml하고 명시 적으로 설정할 수 있습니다.

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

Oracle의 문서 에 따르면 이를 0으로 설정하여 시간 초과를 모두 비활성화 할 수 있습니다.

제한 시간의 현재 값을 찾으려면 Jenkins에서 제공하는 Groovy 콘솔을 사용할 수 있습니다.

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

제 경우에 이것은 Result: 30.


2
인수가 있어야하는 것 같습니다 --sessionTimeout=<minutes>(등호에 유의하십시오).
Rob I

3
WEB-INF디렉토리 는 어디에 있습니까?
bubakazouba

4
@bubakazouba 내 데비안 시스템에서는 / var / cache / jenkins / war /에 있습니다. Windows 7에서는 C : \ Program Files (x86) \ Jenkins \ war \에 있습니다.
Sir Jane

2
DsessionTimeout이 작동하도록 할 수 없었지만 sessionTimeout이 작동하게되었습니다.
Elijah Lynn

1
Jenkins 2.107.2부터는이 값만 설정하는 것만으로는 충분하지 않습니다. 이 질문에 대한 @jhuffaker 의견을 확인하십시오.
Fholst

29

Jenkins 버전 2.107.2부터 sessionEviction을 포함하고 싶을 것입니다.

예를 들어 사용자가 24 시간 동안 12 시간 동안 활동하지 않는 동안 로그인 상태를 유지하려면 :

--sessionTimeout=1440 --sessionEviction=43200

sessionEviction을 지정하지 않으면 탭을 닫은 사람들은 30 분 후에 로그 아웃됩니다.


2
전류 sessionTimeout는 그루비 콘솔에서 Stapler.getCurrentRequest().getSession().getMaxInactiveInterval() / 60. sessionEviction그루비 콘솔에서 설정하는 방법을 알고 있습니까?
WIM

10
다음과 같이 제거 유휴 시간을 확인할 수 있습니다. import org.kohsuke.stapler.Stapler; sess = Stapler.getCurrentRequest (). getSession (); printf ( "sessionTimeout : % d 초 \ n", sess.getMaxInactiveInterval ()); printf ( "sessionEviction : % d 초 \ n", sess.getSessionHandler (). getSessionCache (). getEvictionPolicy ());
kmaehashi

3
감사합니다! 이것은 1 년 넘게 저를 괴롭 혔으며 --sessionEviction지금까지 논쟁을 우연히 발견 한 적이 없습니다 .
richid

완벽합니다. 세션 타임 아웃이 그 자체로 아무것도하지 않는 이유를 설명합니다.
insideClaw

12

1.528 --sessionTimeout <minutes>부터는 init 스크립트를 통해 젠킨스를 시작할 때 매개 변수를 사용할 수 있습니다 . 전쟁을 시작한다면-DsessionTimeout=<minutes>

1.6 업데이트

인수로 전달하는 경우 --sessionTimeout=<minutes>


이것은 내 젠킨스 프로세스입니다. 그러나 여전히 10 분 미만의 시간이 초과됩니다. 뭐가 문제 야? "java -Dcom.sun.akuma.Daemon = daemonized -Djava.awt.headless = true -Xmx6144m -Xms2048m -XX : MaxPermSize = 512m -XX : + CMSClassUnloadingEnabled -XX : + UseConcMarkSweepGC -Dhudson.diyChunking = false -DJENKINS_HOME = / 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

전쟁을 시작하는 것 같습니다. 통과 시도-DsessionTimeout=600
cesar 2015

2
jenkins 1.6에 대한 인수는 --sessionTimeout=<minutes>(등호에 유의하십시오) 이어야합니다 .
Rob I

1
네, 맞습니다. 1.628의 사용법이 Usage: java -jar jenkins.war [--option=value] [--option=value]감사합니다!
cesar

11

그루비 콘솔을 사용하여 설정할 수도 있습니다.

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

하지만 현재 세션에서만 사용할 수 있습니다.


1
이 접근 방식을 사용하고 현재 세션에 대한 세션 시간 초과를 비활성화하기 위해 메서드에 0을 전달했습니다.
jstricker

이것은 현재 세션에서 훌륭하게 작동했습니다. Groovy 콘솔을 사용하여 모든 세션에 대해 이러한 설정을 변경하는 방법이 있습니까?
Yuri Brovman

8

Ubuntu의 경우 :

nano /etc/default/jenkins

파일 끝에 JENKINS_ARGS 를 추가 합니다.

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

1
우수는 단지 내가 또한 말을 주제에 본 적이 대답 경우 이러한 매개 변수를 적용 할 수 있습니다. 위의 @kmaehashi 코드로 확인할 수 있습니다.
insideClaw

4

이 버전의 Jenkins 1.567에는 자동 새로 고침 활성화 옵션이 있으므로 어떻게 든 세션을 계속 새로 고치고 로그 아웃되지 않습니다. 그것은 나를 위해 작동합니다 ...


3

내 Linux 배포판에서이 설정을 / etc / sysconfig / jenkins에 추가 할 수 있습니다.

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

그런 다음

sudo /etc/init.d/jenkins restart

0

Jenkins가 Windows 서비스 ( jenkins.exe) 로 실행중인 경우 jenkins.xml설치 디렉토리 에서 매개 변수를 편집 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.