Jenkinsのログインタイムアウトを増やす


84

Jenkinsがユーザーをログアウトする前にタイムアウトウィンドウを増やす方法を知っている人はいますか?1日くらいに上げたいと思っています。

私は一日中ジェンキンスに出入りしていて、ジョブの実行の合間にログアウトし続けています。この欲求不満に加えて、「ログインしたままにする」チェックボックスも機能していないようです。


Jenkinsのどのバージョンですか?ログインCookieに関連するJenkinsのバグがありました:issues.jenkins-ci.org/browse/JENKINS-16278。お使いのバージョンに適用できない場合でも、そのバグのトラブルシューティングコメントを読む価値があります。このバグは、デフォルトのログインCookieタイムアウトが14日であることも示しています。
Dave Bacher 2014年

@DaveBacher v1.567を実行していて、14日間のログインが確実に得られません:)
Ray

@DaveBacher chromeとfirefoxで10分間ログインした後、ブラウザクライアントをすばやくキルしてremember meをテストしましたが、動作するので、ログアウトが強制され、remembermeが壊れていると思います。
レイ

回答:


71

JenkinsはJettyを使用し、Jettyのデフォルトのタイムアウトは30分です。これは認証設定とは無関係です。ActiveDirectoryを使用していますが、タイムアウトに影響するのはこの設定です。

--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>(等号に注意してください)。
ロブI

3
どこにあるWEB-INFディレクトリは?
bubakazouba 2016

4
@bubakazouba私のDebianシステムでは、/ var / cache / jenkins / war /にあります。Windows 7では、C:\ Program Files(x86)\ Jenkins \ war \にあります
Sir Jane

2
DsessionTimeoutを機能させることができませんでしたが、sessionTimeoutを機能させることができました。
イライジャ・リン

1
Jenkins 2.107.2以降、この値を設定するだけでは不十分です。この質問に対する@jhuffakerのコメントを確認してください。
Fholst

29

Jenkinsバージョン2.107.2以降、sessionEvictionを含める必要があります

たとえば、ユーザーを24時間および12時間非アクティブにしておくには、次のようにします。

--sessionTimeout=1440 --sessionEviction=43200

sessionEvictionを指定しない場合、タブを閉じた人は30分後にログアウトされます。


2
電流sessionTimeoutは、GroovyコンソールでStapler.getCurrentRequest().getSession().getMaxInactiveInterval() / 60。を使用して確認できます。sessionEvictiongroovyコンソールでを取得/設定する方法を知っていますか?
2018

10
立ち退きのアイドル時間を次のように確認できます。importorg.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まで議論に出くわしたことがありませんでした。
リッチな

完璧です。これは、セッションタイムアウトがそれ自体では何もしないように見える理由を説明しています。
insideClaw

12

1.528--sessionTimeout <minutes>以降、initスクリプトを介して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 -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 2015

あなたは戦争を始めているようです。パスしてみてください-DsessionTimeout=600
cesar 2015

2
jenkins 1.6の引数は次のようになります--sessionTimeout=<minutes>(等号に注意してください)。
ロブI

1
うん、あなたは正しい。1.628の使用法はUsage: java -jar jenkins.war [--option=value] [--option=value]ありがとうを示しています!
cesar 2015年

11

groovyコンソールを使用して設定することも可能のようです。

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

しかし、私はそれが現在のセッションでのみ利用可能になると思います


1
このアプローチを使用し、メソッドにゼロを渡して、現在のセッションのセッションタイムアウトを無効にしました。
jstricker 2017年

これは、現在のセッションでうまく機能しました。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

このバージョンのJenkins1.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.