Tăng thời gian chờ đăng nhập Jenkins


84

Có ai biết cách tăng thời gian chờ trước khi Jenkins đăng xuất người dùng không? Tôi đang muốn nâng nó lên 1 ngày hoặc lâu hơn.

Tôi làm việc vào và ra jenkins cả ngày và chúng tôi liên tục đăng xuất giữa các công việc. Thêm vào sự thất vọng này, hộp kiểm 'luôn đăng nhập' dường như cũng không hoạt động.


Phiên bản nào của Jenkins? Đã xảy ra lỗi Jenkins liên quan đến cookie đăng nhập: issue.jenkins-ci.org/browse/JENKINS-16278 . Ngay cả khi nó không áp dụng được cho phiên bản của bạn, bạn cũng nên đọc qua các nhận xét khắc phục sự cố trong lỗi đó. Lỗi đó cũng lưu ý rằng thời gian chờ cookie đăng nhập mặc định là 14 ngày.
Dave Bacher

@DaveBacher chúng tôi đang chạy v1.567 và chắc chắn không nhận được 14 ngày đăng nhập :)
Ray

@DaveBacher Tôi đã thử nghiệm tính năng ghi nhớ tôi bằng cách giết nhanh ứng dụng khách trình duyệt sau khi đăng nhập trong 10 phút trong chrome và firefox và nó hoạt động, vì vậy tôi nghĩ rằng việc đăng xuất đang bị buộc và phá vỡ bộ nhớ của tôi.
Ray

Câu trả lời:


71

Jenkins sử dụng Jetty và thời gian chờ mặc định của Jetty là 30 phút . Điều này độc lập với cài đặt xác thực - Tôi sử dụng Active Directory nhưng cài đặt này vẫn ảnh hưởng đến thời gian chờ.

Bạn có thể ghi đè thời gian chờ bằng cách chuyển đối số --sessionTimeout=<minutes>vào tập lệnh Jenkins init hoặc -DsessionTimeout=<minutes>vào tệp .war. Ví dụ:

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

Ngoài ra, bạn có thể chỉnh sửa Jenkins ' <jenkinsHome>/.jenkins/war/WEB-INF/web.xmlvà thêm thiết lập rõ ràng:

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

Theo tài liệu của Oracle, bạn có thể đặt giá trị này thành 0 để tắt hoàn toàn thời gian chờ.

Để tìm ra giá trị hiện tại cho thời gian chờ, bạn có thể sử dụng bảng điều khiển Groovy được cung cấp trong Jenkins:

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

Trên ví dụ của tôi, điều này cho thấy Result: 30.


2
Có vẻ như đối số nên là --sessionTimeout=<minutes>(lưu ý dấu bằng).
Rob I

3
đâu là WEB-INFthư mục?
bubakazouba

4
@bubakazouba Trên hệ thống Debian của tôi, nó nằm trong / var / cache / jenkins / war /. Trên Windows 7, nó nằm trong C: \ Program Files (x86) \ Jenkins \ war \
Sir Jane

2
Tôi không thể làm cho DsessionTimeout hoạt động, nhưng đã làm cho sessionTimeout hoạt động.
Elijah Lynn

1
Đối với Jenkins 2.107.2, chỉ đặt giá trị này là không đủ. Vui lòng kiểm tra bình luận của @jhuffaker về câu hỏi này.
Fholst

29

Kể từ phiên bản Jenkins 2.107.2, bạn sẽ muốn bao gồm sessionEviction

Ví dụ để giữ mọi người đăng nhập trong 24 giờ và 12 giờ không hoạt động:

--sessionTimeout=1440 --sessionEviction=43200

Nếu bạn không chỉ định sessionEviction, những người đóng tab sẽ bị đăng xuất sau 30 phút.


2
Dòng điện sessionTimeoutcó thể được kiểm tra trong bảng điều khiển linh hoạt với Stapler.getCurrentRequest().getSession().getMaxInactiveInterval() / 60. Bạn có biết cách tải / cài đặt sessionEvictiontrong bảng điều khiển thú vị không?
wim

10
Bạn có thể xác nhận thời gian không hoạt động trục xuất như sau: import org.kohsuke.stapler.Stapler; sess = Stapler.getCurrentRequest (). getSession (); printf ("sessionTimeout:% d seconds \ n", sess.getMaxInactiveInterval ()); printf ("sessionEviction:% d seconds \ n", sess.getSessionHandler (). getSessionCache (). getEvictionPolicy ());
kmaehashi

3
Cảm ơn bạn! Điều này đã làm tôi khó chịu hơn một năm và tôi chưa bao giờ vấp phải cuộc --sessionEvictiontranh cãi nào cho đến bây giờ.
richid

Hoàn hảo, điều đó giải thích tại sao thời gian chờ của phiên dường như không tự làm được gì.
insideClaw 19/07/19

12

Kể từ 1.528, bạn có thể sử dụng --sessionTimeout <minutes>tham số khi khởi động jenkins thông qua tập lệnh init. Nếu bắt đầu cuộc chiến, hãy vượt qua-DsessionTimeout=<minutes>

Cập nhật cho 1.6

Nếu chuyển vào như một biện pháp sử dụng --sessionTimeout=<minutes>


Đây là quá trình jenkins của tôi. Nhưng vẫn còn thời gian chờ dưới 10 phút. Chuyện gì vậy? "java -Dcom.sun.akuma.Daemon = daemonized -Djava.awt.headless = true -Xmx6144m -Xms2048m -XX: MaxPermSize = 512m -XX: + CMSClassUnloadingEnabled -XX: + UseConcMarkSweepGC -Dhudson.diyChun / 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

Có vẻ như bạn đang phát động cuộc chiến. Hãy thử vào-DsessionTimeout=600
cesar

2
Có vẻ như đối số cho jenkins 1.6 phải là --sessionTimeout=<minutes>(lưu ý dấu bằng).
Rob I

1
Đúng, bạn đúng. Sử dụng cho 1.628 đang hiển thị Usage: java -jar jenkins.war [--option=value] [--option=value]Cảm ơn!
cesar

11

Có vẻ như bạn cũng có thể đặt nó bằng bảng điều khiển thú vị:

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

Nhưng tôi đoán nó sẽ chỉ có sẵn cho phiên hiện tại


1
Tôi đã sử dụng phương pháp này và chuyển 0 vào phương pháp vô hiệu hóa thời gian chờ của phiên cho phiên hiện tại của tôi.
jstricker

Điều này hoạt động tốt cho phiên hiện tại. Có cách nào để thay đổi các cài đặt này cho tất cả các phiên sử dụng bảng điều khiển Groovy không?
Yuri Brovman

8

Đối với Ubuntu:

nano /etc/default/jenkins

Nối vào JENKINS_ARGS ở cuối tệp:

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

1
Tuyệt vời, chỉ trả lời tôi đã nhìn thấy về chủ đề cũng nói nơi những thông số sẽ được áp dụng. Điều này có thể được xác minh bằng mã của @ kmaehashi ở trên.
insideClaw 19/07/19

4

Phiên bản Jenkins 1.567 này cũng có tùy chọn bật tự động làm mới để bằng cách nào đó nó tiếp tục làm mới phiên và tôi không bao giờ bị đăng xuất. Nó phù hợp với tôi ...


3

Trên bản phân phối Linux của tôi, cài đặt này có thể được thêm vào / etc / sysconfig / jenkins

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

Sau đó, khởi động lại với

sudo /etc/init.d/jenkins restart

0

Nếu Jenkins đang chạy dưới dạng dịch vụ Windows ( jenkins.exe), các tham số có thể được chỉnh sửa trong jenkins.xmlthư mục cài đặt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.