2012-01-08 46 views
14

Tôi đang chạy Jenkins trên máy chủ Linux và hiển thị thời gian sai :(Jenkins hiển thị thời gian sai?

trạng: Tôi đang chạy một ứng dụng java (trong tomcat mà cũng chạy Jenkins) cho thấy thời gian chính xác trong các tập tin log (Tôi sử dụng Bios được đặt thành thời gian UTC (đồng hồ hệ thống) như được khuyến nghị ở đây: http://www.linuxsa.org.au/tips/time.html

Trong Linux nó được chỉ định trong/etc/sysconfig/clock mà đồng hồ hệ thống được đặt thành UTC và trong múi giờ nào Tôi đang ở UTC + 1

Lệnh ngày chạy trên Linux hiển thị giờ địa phương chính xác. e: Sun 08 Tháng 1 12:11:35 CET 2012 Nhưng Jenkins cho thấy thời gian cộng thêm 1 tiếng: (...

The Jenkins cấu hình cho thấy: user.timezone = Châu Âu/Amsterdam (đó là tính theo giờ UTC + 1).

Tôi nghĩ rằng Jenkins (java) nghĩ rằng đồng hồ địa phương được đặt thành UTC sao cho 1 giờ được thêm vào.

Làm cách nào để giải quyết vấn đề này?

+0

Đây rõ ràng không phải là câu hỏi lập trình. Bạn nên tham khảo serverfault.com –

+0

Nhưng sau đó tại sao nó không chính xác trong Jenkins, nhưng trong ứng dụng của riêng tôi? (cả hai ứng dụng java). Tôi đã ba kiểm tra tất cả các thiết lập đồng hồ linux – edbras

+0

Bạn có một vấn đề ứng dụng/quản trị không phải là một vấn đề lập trình. –

Trả lời

13

Xem ở đây: https://wiki.jenkins-ci.org/display/JENKINS/Change+time+zone

Nói tóm lại, bạn có thể thiết lập thuộc tính hệ thống, hoặc thay đổi các tùy chọn JVM,

java -Dorg.apache.commons.jelly.tags.fmt.timeZone=TZ ... 

Hoặc thay đổi cấu hình Jenkins trong/etc/default/Jenkins (Debian) hoặc/etc/sysconfig/Jenkins (Red Hat):

JAVA_ARGS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York" 

Nó cũng đề cập đến -Duser.timezone="..." là một lựa chọn, nhưng có thể gây ra vấn đề/can thiệp vào những bối cảnh khác (s omeward tay vẫy tay & hãy cẩn thận: du hành thời gian luôn không thể đoán trước được).

Nói chung (theo kinh nghiệm của tôi), không thay đổi thời gian hệ thống, vì chúng ta, máy chủ của chúng & dữ liệu của chúng tôi sống trong một thế giới toàn cầu & nên được xử lý, gửi, so sánh mọi thời điểm trong UTC cho đến thời điểm mới nhất có thể : thường đó là GUI (lớp trình bày) ngay trước khi được hiển thị (... nếu thậm chí sau đó). (Kết quả hệ thống xây dựng của chúng tôi thực sự tạo ra dữ liệu được đưa vào hệ thống khác trong một múi giờ khác.)

+1

Chúng tôi đã đặt user.timezone thành múi giờ chính xác, nhưng Jenkins vẫn đang sử dụng UTC. Nó chỉ ra rằng chủ được đặt đúng, nhưng nô lệ thì không. Làm cách nào để các nô lệ được đặt thành múi giờ chính xác? –

14

Nếu bạn đang chạy Jenkins with Docker, bạn có thể thêm -e JAVA_OPTS=-Duser.timezone=TZ vào đối số docker.

docker run -e JAVA_OPTS=-Duser.timezone=$TZ jenkins 

Tất cả có sẵn TZ có thể được tìm thấy here.

0

On Jenkins 2.63 trên Ubuntu 14.04.5 LTS thiết

JAVA_ARGS="-Djava.awt.headless=true -Duser.timezone=America/Los_Angeles" 

trong /etc/default/jenkins và sau đó làm

sudo service jenkins stop 
sudo service jenkins start 

làm việc cho tôi để thay đổi múi giờ từ UTC để PDT.

1

Đặt mã này vào Dockerfile và nó sẽ hoạt động;

RUN echo "import hudson.model.*;" > 
/var/jenkins_home/init.groovy.d/timezone.groovy && \ 
echo "import jenkins.model.*;" >> 
/var/jenkins_home/init.groovy.d/timezone.groovy && \ 
echo "System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 
'America/Denver')" >> /var/jenkins_home/init.groovy.d/timezone.groovy 

$ JENKINS_HOME/init.groovy.d/*. Groovy sẽ được thực thi khi khởi động.

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 
'America/Denver') 

Điều đó đặt múi giờ.

Các vấn đề liên quan