Как я могу изменить рабочий каталог, когда я запускаю скрипт с ant sshexec в Jenkins? - PullRequest
2 голосов
/ 21 марта 2012

У меня есть цель ant, где я успешно использую sshexec-задачу для установки сервера с помощью tomcat в OpenSuse 11.

Моя проблема возникает, когда я пытаюсь запустить скрипт, запускающий только что установленный сервер.Мне нужно сделать это как пользователь 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. Но яне знаю, как и где ...

Итак, чтобы подвести итог этого длинного вопроса вкратце:

Что мне нужно сделать, чтобы иметь возможность запустить мой startup.sh от имени root изправильная папка tomcat / bin с ant-скриптом, который запускается в Jenkins?

Ответы [ 2 ]

8 голосов
/ 05 мая 2012

Я обнаружил, что "cd" работает, когда выполняется в одной и той же строке ...

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

На самом деле я не использовал это для запуска сценария оболочки, но у меня часто будет изменение муравьякаталоги, а затем запустить команды GIT.

0 голосов
/ 04 апреля 2012

Да, я тоже столкнулся с той же проблемой. Команда cd не работает с sshexec. Альтернативный вариант - поместить все команды в какой-нибудь файл install.sh и скопировать его на удаленный компьютер. А затем используйте командный ресурс sshexec для выполнения этого файла на удаленной машине. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...