Збільште час очікування входу Дженкінса


84

Хто-небудь знає, як збільшити час очікування, перш ніж Дженкінс вийде з системи? Я хочу збільшити його до 1 дня або близько того.

Я працюю і виймаю дженкіни цілими днями, і ми продовжуємо виходити з системи між робочими роботами. Додано до цього розчарування, прапорець "залишатися в системі", схоже, теж не працює.


Яка версія Дженкінса? Виникла помилка Jenkins, пов’язана з файлами cookie для входу: issues.jenkins-ci.org/browse/JENKINS-16278 . Навіть якщо це не стосується вашої версії, варто прочитати коментарі щодо усунення несправностей у цій помилці. Ця помилка також зазначає, що час очікування файлу cookie за замовчуванням становить 14 днів.
Dave Bacher

@DaveBacher, у нас запущена версія 1.567, і ми точно не отримуємо 14 днів входу :)
Рей

@DaveBacher Я протестував модуль пам'яті мене, швидко вбивши клієнта браузера після входу в систему протягом 10 хвилин в chrome і firefox, і це працює, тому я думаю, що вихід вимушений і порушує функцію пам'яті про мене.
Рей

Відповіді:


71

Дженкінс використовує Jetty, а тайм-аут Jetty за замовчуванням становить 30 хвилин . Це не залежить від налаштувань автентифікації - я використовую Active Directory, але все ще це налаштування впливає на час очікування.

Ви можете замінити час очікування, передавши аргумент --sessionTimeout=<minutes>у скрипт ініціалізації Jenkins або -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, щоб взагалі вимкнути час очікування.

Щоб дізнатись поточне значення таймаутів, можна скористатися консоллю Groovy, наданою в Jenkins:

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

На моєму прикладі це показує Result: 30.


2
Схоже, аргумент повинен бути --sessionTimeout=<minutes>(зверніть увагу на знак рівності).
Роб I,

3
де WEB-INFкаталог?
bubakazouba

4
@bubakazouba У моїй системі Debian він знаходиться у / var / cache / jenkins / war /. У Windows 7 це в C: \ Program Files (x86) \ Jenkins \ war \
Sir Jane,

2
Я не зміг змусити DsessionTimeout працювати, але працював sessionTimeout.
Елайджа Лінн,

1
Станом на Дженкінс 2.107.2, встановлення цього значення лише недостатньо. Будь ласка, перевірте коментар @jhuffaker щодо цього питання.
Фолст

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
Дякую! Це мучить мене більше року, і я досі ніколи не натрапляв на --sessionEvictionсуперечку.
Річід

Ідеально, це пояснює, чому час очікування сеансу, здається, нічого не робить сам по собі.
insideClaw

12

Починаючи з 1.528, ви можете використовувати --sessionTimeout <minutes>параметр під час запуску дженкінів через скрипт ініціалізації. Якщо ви починаєте війну, вступайте-DsessionTimeout=<minutes>

Оновлення для версії 1.6

Якщо ви передаєте як аргумент, використовуйте --sessionTimeout=<minutes>


Це мій процес дженкінів. Але все-таки час очікування менше 10 хвилин. Що не так? "java -Dcom.sun.akuma.Daemon = демонізована -Djava.awt.headless = true -Xmx6144m -Xms2048m -XX: MaxPermSize = 512m -XX: + CMSClassUnloadingEnabled -XX: + UseConcMarkSweepkingMCDDCHDDCHDDCHDDCHDDCHDDCHDDCHDDC 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 "
Баскар

Схоже, ви починаєте війну. Спробуйте пройти-DsessionTimeout=600
Цезар

2
Схоже, аргументом до jenkins 1.6 повинен бути --sessionTimeout=<minutes>(зверніть увагу на знак рівності).
Роб I,

1
Так, ти маєш рацію. Використання 1.628 показує Usage: java -jar jenkins.war [--option=value] [--option=value]спасибі!
cesar

11

також здається можливим встановити його за допомогою консолі groovy:

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

Але, думаю, він буде доступний лише для поточної сесії


1
Я використав цей підхід і передав нуль в метод, щоб вимкнути час очікування сеансу для мого поточного сеансу.
jstricker

Це вдало працювало для поточної сесії. Чи можна змінити ці налаштування для всіх сеансів за допомогою консолі Groovy?
Юрій Бровман

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

Якщо Дженкінс працює як служба Windows ( jenkins.exe), параметри можна редагувати в jenkins.xmlкаталозі інсталяції.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.