Jenkins反向运行shell脚本?

时间:2012-07-20 10:22:59

标签: bash jenkins tomcat6 sh jenkins-plugins

我的jenkins服务器存在以相反顺序运行shell命令的问题。 我指定了要运行的命令

  1. 将文件复制到另一台服务器
  2. 运行更新脚本<​​/ li>

    例如,

    $nohup scp -i .ssh/blah -o StrictHostKeyChecking=no foo.txt tomcat@foo.coo.com:/tmp/FOO.txt &> /dev/null
    $nohup ssh -t -t -n -i .ssh/blah -o StrictHostKeyChecking=no tomcat@foo.coo.com '/home/tomcat/bin/update.sh /tmp/FOO.txt.war'
    
    而不是jenkins输出控制台会显示:

    1. 正在运行update.sh
    2. 复制文件
    3. 当我将两个命令合并为一个&amp;&amp;时,也会出现同样的问题。 它发生在jenkins的所有工作上

      我目前正在tomcat6服务器上运行jenkins 1.469

      任何帮助将不胜感激!

      编辑:

      我正在将这些命令作为每个作业的批处理任务运行。问题似乎不是詹金斯,因为这运行正确

      [workspace] $ /bin/sh -xe /tmp/tomcat6-tomcat6-tmp/hudson8724999678434432030.sh
      + echo 1
      1
      + echo 2
      2
      + echo 3
      3
      + echo 4
      4
      

1 个答案:

答案 0 :(得分:1)

使用&>重定向stdout和stderr是bash shell的一个特性。如果你想使用特定于bash的功能,你需要让Jenkins知道应该使用bash执行构建步骤。

这可以通过两种方式完成:

1)更改Jenkins全局配置中的默认shell或

2)构建步骤的第一行必须以#!/bin/bash ...

开头

请注意,/bin/sh并非始终是/bin/bash的符号链接。