Увеличьте время ожидания входа в систему Jenkins

86

Кто-нибудь знает, как увеличить окно тайм-аута, прежде чем Дженкинс выйдет из системы? Я собираюсь поднять его до 1 дня или около того.

Я работаю с Дженкинсом весь день, и мы постоянно выходим из системы между запусками рабочих мест. К этому разочарованию, похоже, не работает и флажок «оставаться в системе».

Луч
источник
Какая версия Дженкинса? Ошибка Jenkins, связанная с файлами cookie для входа: issues.jenkins-ci.org/browse/JENKINS-16278 . Даже если это не применимо к вашей версии, стоит прочитать комментарии по устранению неполадок в этой ошибке. Эта ошибка также указывает на то, что время ожидания cookie для входа по умолчанию составляет 14 дней.
Дэйв Бачер,
@DaveBacher, у нас версия 1.567, и мы определенно не получаем 14 дней входа :)
Рэй
@DaveBacher Я протестировал запомнить меня с помощью быстрого уничтожения клиента браузера после входа в систему в течение 10 минут в chrome и firefox, и он работает, поэтому я думаю, что выход из системы принудительный и нарушает запомнить меня.
Ray

Ответы:

73

Jenkins использует 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 \
сэр Джейн,
2
Мне не удалось заставить DsessionTimeout работать, но заработал sessionTimeout.
Элайджа Линн
2
Начиная с Jenkins 2.107.2, одной установки этого значения недостаточно. Пожалуйста, проверьте комментарий @jhuffaker по этому вопросу.
Fholst
30

Начиная с версии 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; сесс = Stapler.getCurrentRequest (). getSession (); printf ("sessionTimeout:% d секунд \ n", sessions.getMaxInactiveInterval ()); printf ("sessionEviction:% d секунд \ n", sessions.getSessionHandler (). getSessionCache (). getEvictionPolicy ());
kmaehashi
3
Спасибо! Это беспокоит меня больше года, и --sessionEvictionдо сих пор я никогда не сталкивался с этим аргументом.
richid
Отлично, это объясняет, почему тайм-аут сеанса сам по себе ничего не делает.
insideClaw
12

Начиная с версии 1.528, вы можете использовать этот --sessionTimeout <minutes>параметр при запуске jenkins через сценарий инициализации. Если начинаешь войну, пройди-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 -DHENking.dhudson = falseK -DHENking.dhudson 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
cesar
2
Похоже, аргумент jenkins 1.6 должен быть --sessionTimeout=<minutes>(обратите внимание на знак равенства).
Роб I
1
Ага, ты прав. Показывает использование 1.628 Usage: java -jar jenkins.war [--option=value] [--option=value]Спасибо!
cesar
11

также кажется возможным установить его с помощью groovy console:

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

Но я думаю, это будет доступно только для текущего сеанса

Свен Келлер
источник
1
Я использовал этот подход и передал методу ноль, чтобы отключить тайм-ауты сеанса для моего текущего сеанса.
jstricker
Это отлично сработало для текущего сеанса. Есть ли способ изменить эти настройки для всех сеансов с помощью консоли Groovy?
Юрий Бровман
9

Для 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 также есть опция включения автоматического обновления, поэтому она каким-то образом продолжает обновлять сеанс, и я никогда не выхожу из системы. Меня устраивает...

Рагхав Вайдхьянатхан
источник
4

В моем дистрибутиве 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в каталоге установки.

vll
источник