在jenkins中配置的任务,从任务log看,发现时间都是按照格林威治时间显示的,jenkins的系统管理中的“系统信息”里,user.timezone也是Etc/UTC。
我的这个jenkins环境是这样的:jenkins server运行在docker container中,host是ubuntu14.04,container使用的镜像也是基于ubuntu14.04的。最初,host和container的时间也是格林威治时间,我通过"sudo cp /usr/share/zoneinfo/PRC /etc/localtime"重新配置了系统的时区,host和container的时间显示就为北京时间了。但是jenkins server里显示的时间依然是格林威治时间,即使是我将container删掉,重新创建,也还是这样。
不知如何才能将jenkins中的时间调整为北京时间?谢谢。
이 문제는 해결되지 않았습니다. 하지만 스크립트에서는 베이징 시간을 사용해야 하기 때문에
TZ='PRC' date
명령을 사용하여 변수 표시에 저장함으로써 이 문제를 피할 수 있었습니다.윗층에서 쿨한 척 하지 마세요. 사기인 줄 알았는데 정말 해결이 안 됐고 오해할 뻔했어요.
근본적인 이유는 Jenkins가 jvm 시간을 사용하기 때문에 나중에 수정되는 시스템 시간과 여전히 다르기 때문입니다. 아래 단계를 따르십시오. 나는 그것을 해결했다.
Linux에서 JVM 시간대 설정
매개변수를 추가합니다.jre의 간소화된 Linux 설치에서 모든 Java 프로그램에서 얻은 시간이 시스템 시간이 아니라는 것을 발견했습니다. 나중에 알고보니 시간대가 잘못됐더라구요. Java 프로그램에서 얻은 시간은 모두 GMT 시간이고 시스템은 베이징 시간이므로 GMT+8이어야 하며 정확히 8시간 다릅니다. 온라인에서 많은 정보를 검색한 결과, 방법은 두 가지뿐입니다:
1. 자바 함수를 사용하여 프로그램에서 시간대를 설정합니다.
2. Java 프로그램을 시작할 때 -Duser.timezone=GMT+8
그러나 시간대를 설정하기 위해 각 프로그램의 소스 코드를 수정할 수는 없습니다. 모든 Java 프로그램이 시작될 때 매개변수를 추가하고 싶지 않은데 너무 번거롭습니다. 영구적인 해결책은 없나요?
처음에는 jre에 시간대 구성을 저장한 구성 파일이 있어야 한다고 생각했지만 아무 것도 발견되지 않았습니다. 그러나 jre는 시간대 구성을 얻기 위해 항상 시스템으로 이동해야 합니다. 그래서 Java가 Linux에서 시스템 구성 파일을 사용하는지 궁금해지기 시작했습니다. 따라서 시간대 구성을 보려면 Linux 시스템 아래의 /etc/sysconfig 디렉토리로 이동하십시오. 시간대를 설정하는 데 사용된 시계 파일이 누락된 것으로 나타났습니다. 다른 Linux 시스템에서 이 파일을 복사하여 시도해 보세요. Java 프로그램의 시간은 시스템 시간과 일치합니다. jre는 /etc/sysconfig/clock 파일에서 시간대 정보를 얻는 것 같습니다.
첨부된 시계 파일 내용은 다음과 같습니다.
ZONE="아시아/상하이"
UTC=거짓
ARC=거짓
ZONE - 시간대
UTC - 시계가 UTC로 설정되어 있음을 나타냅니다.
ARC - 알파는 ARC 사용을 나타냅니다.
으아아아
https://github.com/jenkinsci/docker/issues/45
다른 방법을 제출해 주세요
페이지에서 젠킨스 서버를 다시 시작하세요.1.cd /etc
2.rm 현지 시간
3.현지시간 -> /usr/share/zoneinfo/아시아/상하이
4. http://jenkins-server:8080/restart
Jenkins deb 패키지를 통해 설치된 Ubuntu 12.04를 사용하고 있습니다.
수정 방법은 다음과 같습니다.
으아아아또는
으아아아Google이 차단된 이후로 사람들은 공식 문서, 공식 위키를 거의 읽지 않습니다