0

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

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

例如,

$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'

相反,詹金斯输出控制台将显示:

  1. 运行更新.sh
  2. 复制文件

当我将两个命令与 && 配对时也会出现同样的问题,并且我在 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
4

1 回答 1

1

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

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

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

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

请注意,/bin/sh它并不总是指向/bin/bash.

于 2012-07-20T20:56:17.350 回答