Jenkins外部监控工作设置

时间:2016-07-15 15:57:21

标签: jenkins cron

我是詹金斯的新手。我想让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搞混了。请帮忙解决一下。

2 个答案:

答案 0 :(得分:0)

您使用的是哪个java和jenkins版本?

我让我的jenkins配置好并且没有任何问题但是在一次升级后我开始出现同样的错误

我的环境是:

  • Debian 8
  • jenkins 2.13
  • java 1.7.0_101(IcedTea)

答案 1 :(得分:0)

我能够通过将Jenkins降级到2.2来实现一种解决方法。

根据this page ServletContextListener在2.3中介绍。我从here抓取了一个旧的WAR,然后使用Digital Ocean guide从WAR安装。

供参考,我使用的是Centos 7和Java 1.8.0_101

希望有一个更永久的解决方案。