当我在Jenkins中使用ant sshexec运行脚本时,如何更改工作目录?

时间:2012-03-21 06:53:46

标签: linux ant ssh jenkins

我有一个ant目标,我成功使用sshexec-task在OpenSuse 11上使用tomcat安装服务器。

当我尝试运行启动新安装的服务器的脚本时出现问题。 我需要以root身份执行此操作,因此我使用了一个任务:

<sshexec host="${tss.hostname}"
    username="${username}"
    password="${password}"
    trust="true"
    Command="/usr/local/bin/foo/bar/tomcat/bin/startup.sh"
    failonerror="false"/>

这个问题是我需要从它所在的文件夹运行脚本,因为它从该位置找到CATALINA_HOME和JAVA_HOME。路径“foo / bar”会随着时间的推移而改变,所以我不想永久地设置它。 我只想将我的跑步路径改为正确的路径。

由于我未能像这样启动服务器,我想调查一下并更改脚本,因此我使用“CommandResource =”cmd.txt“而不是直接命令。我以为我可以使用它来设置CATALINA_HOME之前我启动了服务器并解决了这个问题。

这是使用cmd.txt时的结果:

  [sshexec] Connecting to foo-bar:22
  [sshexec] cmd : 
  [sshexec] cmd : cd /usr/local/bin/foo/bar/tomcat/bin
  [sshexec] cmd : pwd
  [sshexec] /root
  [sshexec] cmd : echo $PATH
  [sshexec] /usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
  [sshexec] cmd : export CATALINA_HOME=$PATH:/usr/local/bin/tibco/tss/4.5.0/tomcat
  [sshexec] cmd : echo $PATH
  [sshexec] /usr/java/jdk1.6.0_27/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin

这表明cd和export命令都没有任何效果。

我怀疑我需要更改ssh的权限。我已经读过,我可能需要更改.ssh / config。但我不知道如何或在哪里...

所以,总结这个长问题:

如果能够使用在Jenkins中运行的ant脚本从正确的tomcat / bin文件夹中以root身份运行我的startup.sh,我需要做什么?

2 个答案:

答案 0 :(得分:8)

我发现“cd”在同一行上完成时有效......

<sshexec host="${tss.hostname}"
username="${username}"
password="${password}"
trust="true"
Command="(cd /usr/local/bin/foo/bar/tomcat/bin; startup.sh)"
failonerror="false"/>

我实际上并没有使用它来运行shell脚本,但我经常会有ant更改目录,然后运行GIT命令。

答案 1 :(得分:0)

是的,我也遇到了同样的问题。 cd命令不适用于sshexec。替代方法是将所有命令放在某个install.sh文件中并将其scp到远程计算机。然后使用sshexec命令源在远程计算机上执行此文件。希望这会有所帮助。