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.