外部监控作业类型

ID:external-monitor-job

增加了监视外部执行作业的结果的功能。

必威国际有限公司Jenkins对于监控进程的非交互执行非常有用,比如cron任务、procmail、inetd启动的进程。通常这些任务是完全不受监控的(这让你很难注意到什么时候出了问题),或者他们不管成功或失败都在不停地发送邮件(这导致了同样的情况,你很快就会开始忽视他们)。使用Jenk必威国际有限公司ins可以用很少的开销监视大量此类任务。

建立一个项目

创建一个新作业,并选择“监视外部作业”作为作业类型。

监控执行

对于Debian / Ubuntu:

显然,如果你想从其他机器上运行作业,你应该必威国际有限公司用FQDN替换本地主机。export 必威国际有限公司JENKINS_HOME=http://@ localhost:8080/java -jar /usr/share/jenkins/external-job-monitor/java/jenkins-core-*.jar "external-build-job-name" command-to-run java -jar /usr/share/jenkins/external-job-monitor/java/jenkins-core-*.jar "external-build-test" ls -l

一旦你建立了一个项目,你可以通过运行如下命令来监视项目的执行:

">
$ export 必威国际有限公司JENKINS_HOME=http://user:pw@myserver.acme.org/path/to/jenkins/ $ java -jar /path/to/WEB-INF/lib/jenkins-core-*.jar "job name" 

Windows:

">
> set 必威国际有限公司JENKINS_HOME=http://user:pw@myserver.acme.org/path/to/jenkins/ > java -jar \path\to\WEB-INF\lib\jenkins-core-*.jar "job name" cmd.exe /c 

如果您的web服务器提取必威国际有限公司jenkins.war当它部署Jenkins时,您可以使用路径直必威国际有限公司接到web - inf / lib目录和所有其他所需的jar将在那里找到。否则,您可以从war文件中提取这些文件:

必威国际有限公司Jenkins-core -*.jar remoting-*.jar ant-1.7.0.jar commons-io-1.4jar commons-lang-2.4.jar

所有的都是在web - inf / libwar文件中的路径。只要它们都在同一个目录中,则java jar /道路/ / jen必威国际有限公司kins-core - * . jar命令将找到其他所需的jar。

  • 注:Jenkins的旧版本(1.324之前)也需必威国际有限公司要winstone.jar为了运行这个命令。这个jar位于war文件的顶层目录中,必须手动添加到类路径中(使用类路径- cp)。

JENK必威国际有限公司INS_HOME变量用于定位Jenkins正在运行的服务器,因此必须设置这个变量。除非你的Jenkins工必威国际有限公司作对访客用户有构建许可,包括用户名:password@URL的一部分,如上面的示例所示。

  • 注:在Jenkins 1.324中添加了通过用户名认证:在JENKINS_HOME中的密码;必威国际有限公司对于以前的版本,要么授予作业上的匿名构建权限,要么使用旋度将XML发布给Jenkins(必威国际有限公司见下面)。

你可以复制必威国际有限公司jenkins-core - * . jar如果您想监视在另一台机器上运行的作业,则需要将其他jar文件发送到其他机器。

程序的Stdout和stderr将被记录,非零退出码将被视为失败。

监控cron作业

要监视cron作业,只需从cron脚本运行上述设置。为了避免接收来自cron守护进程的电子邮件,您可能需要这样写:

&1 > /dev/null ">
必威国际有限公司导出JENKINS_HOME=$JENKINS_HOME;Java -jar 必威国际有限公司jenkins-core-*.jar "backup" backup.sh 2>&1 > /dev/null

注意,您还可以通过使用必威国际有限公司自由式软件项目,它还允许您在计划执行之外手动执行作业。

以编程方式提交运行

上面的命令通过向HTTP发送XML来提交执行及其结果。这意味着您可以提交来自任何程序的执行记录,只要您遵循相同的XML格式。

格式说明如下:

...hex binary encoded console output... ... integer indicating the error code. 0 is success and everything else is failure ... milliseconds it took to execute this run ... ... The name to be displayed rather than the build number ...  ... Description of the build ... ">
<运行> <日志编码= " hexBinary " >…十六进制二进制编码控制台输出…结果日志< / > < >…整数,错误码。 …执行此运行所需的毫秒数…< /持续时间> < displayName >…要显示的名称而不是构建号…< / displayName > <描述>…构建的描述…< /描述>运行> < /

持续时间元素是可选的,从1.429开始displayName描述也可以随意添加,这三个元素可以以任何顺序出现,但必须出现在日志和结果之后。控制台输出是用hexBinary编码的,因此可以传入XML中不允许的任何控制字符。

需要将上述XML发送到http://myhost/必威国际有限公司jenkins/job/_jobName_/postBuildResult

使用curl的一个简单示例是(不使用实际数据;序列4142430一个编码的控制台输出美国广播公司加上一个尾随换行符号):

4142430A02000' \ http://user:pass@myhost/jenkins/job/_jobName_/postBuildResult ">
$ curl -X POST -d '<运行>4142430A02000' \ http://user:pass@myhost/j必威国际有限公司enkins/job/_jobName_/postBuildResult

提交每个CLI的运行

最简单的选择是每个CLI/ssh命令都可以提交执行。gzip的日志文件可以通过管道传输:

$ cat result.log.gz | ssh 必威国际有限公司jenkins set-external-build-result——display 7d552c4ba_Linux_tb21——job buildbot——result 1 -b——duration 42——log -

有时需要构建号,因为调用程序可能需要将URL放到提交的构建中。上面的CLI命令返回新的构建号。可以从Java应用程序以编程方式调用上面的命令。你可以找到它的样本在这里

更新日志

1.7版(2017年1月6日)

  • 给予适当的权限,允许非管理员配置或删除作业。
  • 日本本地化更新。

1.6版(2016年7月26日)

1.5版(2016年7月12日)

1.4版(2014年11月18日)

  • 更新项标签以匹配新的面向名词的约定。

1.3版(2014年11月14日)

  • 细化了检查Build权限以涵盖CLI命令的地方。

1.2版(2013年8月29日)