我是詹金斯的新手。我想让Jenkins监视我的crons。我正在关注官方教程: https://wiki.jenkins-ci.org/display/JENKINS/Monitoring+external+jobs
Jenkins正在AWS Ubuntu 14上运行。安装很好,我可以在9091访问Jenkins。 http://www.example.com:9091/
默认安装了外部监视器作业插件。它可以在插件管理器中找到。
到目前为止我做了什么。 在Jenkins上,我创建了一个名为“backup”的新外部作业。 http://www.example.com:9091/job/backup/基本就是那里。
在我的cron文件中:“/ var / spool / cron / crontabs / root”:
MAILTO=example@gmail.com
JENKINS_HOME=http://www.example.com:9091
* * * * * export JENKINS_HOME=$JENKINS_HOME; java -jar /usr/share/jenkins/jenkins-core-2.7.1.jar "backup" backup.sh 2>&1 > /dev/null
由于mailto
设置,我最初收到no jenkins-core-*.jar found error
。我开始寻找jenkins-core-*.jar
,但我找不到。在我的“/ usr / share / jenkins”文件夹中,只有jenkins.war
个文件。我解压缩.war文件并将以下文件复制到它的文件夹中:
jenkins-core-*.jar
remoting-*.jar
ant-1.7.0.jar
commons-io-1.4jar
commons-lang-2.4.jar
jna-posix-*.jar
xstream-*.jar
在我这样做后,我开始收到更复杂的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at hudson.Main.<clinit>(Main.java:222)
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 13 more
正如预期的那样,詹金斯方面注意到了这一点。显然我错过了一些东西。我尝试删除"backup"
周围的引号,并使用我确定正在运行的内容更改命令backup.sh 2>&1 > /dev/null
。例如:cd /my/directory && program myfile.file
但这就是全部。我想知道我是否必须将整个.war文件解压缩到某个地方,或者我是否需要遵循不同的路径?我不确定错误是什么意思。我发现它与Tomcat搞混了。请帮忙解决一下。
答案 0 :(得分:0)
您使用的是哪个java和jenkins版本?
我让我的jenkins配置好并且没有任何问题但是在一次升级后我开始出现同样的错误
我的环境是:
答案 1 :(得分:0)
我能够通过将Jenkins降级到2.2来实现一种解决方法。
根据this page ServletContextListener在2.3中介绍。我从here抓取了一个旧的WAR,然后使用Digital Ocean guide从WAR安装。
供参考,我使用的是Centos 7和Java 1.8.0_101
希望有一个更永久的解决方案。