【发布时间】:2014-03-25 16:00:09
【问题描述】:
我为 jenkins 执行了以下 shell 脚本:
#!/bin/bash
ssh user@perftest03 -f '~/setup_environment.sh load/LoadConfig.xml'
取决于一天中的时间或詹金斯想要什么,或者据我所知的老神,脚本会执行部分或更多脚本,但总是在它完成之前退出。这是 2 个不同的日志,执行相同,脚本相同,没有任何更改:
Started by user Andreas Joelsson
[EnvInject] - Loading node environment variables.
Building remotely on linuxdev01 in workspace /home/byggarebob/workspace/Project-Load
[Project-Load] $ /bin/bash /tmp/hudson1526996494849043502.sh
MG_DIRECTORY ==> /home/user/user
MG_SYMLINK ==> /home/user/user/RunnerConfig.xml
MGC_DIRECTORY ==> /home/user/user-config
MGC_REPOSITORY ==> git@git.company.se:test/user-config.git
MGC_BRANCH ==> develop
MGC_FILE ==> /home/user/user-config/load/LoadConfig.xml
Changing directory to "/home/user/user-config".
cd /home/user/user-config
git show-ref --verify --quiet refs/heads/develop
Checking if we are in branch develop.
git branch | grep --quiet '* develop'
Finished: SUCCESS
和
Started by user Andreas Joelsson
[EnvInject] - Loading node environment variables.
Building remotely on linuxdev01 in workspace /home/byggarebob/workspace/Project-Load
[Project-Load] $ /bin/bash /tmp/hudson7204317023088063558.sh
MG_DIRECTORY ==> /home/user/user
MG_SYMLINK ==> /home/user/user/RunnerConfig.xml
MGC_DIRECTORY ==> /home/user/user-config
MGC_REPOSITORY ==> git@git.company.se:test/user-config.git
MGC_BRANCH ==> develop
MGC_FILE ==> /home/user/user-config/load/LoadConfig.xml
Changing directory to "/home/user/user-config".
cd /home/user/user-config
git show-ref --verify --quiet refs/heads/develop
Finished: SUCCESS
所以一个人设法运行 git show-ref --verify --quiet refs/heads/develop 并继续,而另一个人停在那里,我也停在更改目录和事件打印输出取决于服务器的心情,我已经让它工作过一次,但它显然是一些我找不到的随机元素。
这里是停止执行的 shell 脚本部分(它会持续更长时间,但我不想淹没页面)
if [ ! -d "$MGC_DIRECTORY" ]; then
echo "Unable to clone $MGC_REPOSITORY, cannot continue"
exit 1
else
echo "Changing directory to \"$MGC_DIRECTORY\"."
if [ -n $VERBOSE ]; then
echo "cd $MGC_DIRECTORY"
fi
cd $MGC_DIRECTORY
fi
if [ -n $VERBOSE ]; then
echo "git show-ref --verify --quiet refs/heads/$MGC_BRANCH"
fi
git show-ref --verify --quiet refs/heads/$MGC_BRANCH
if [ $? != 0 ]; then
echo "No branch found in $MGC_DIRECTORY called $MGC_BRANCH."
exit 1
fi
echo "Checking if we are in branch $MGC_BRANCH."
if [ -n $VERBOSE ]; then
echo "git branch | grep --quiet '* $MGC_BRANCH'"
fi
git status | grep --quiet '* $MGC_BRANCH'
我有一个理论,即第一个成功的 shell 命令(返回 0)会破坏执行,但是一些测试用例破坏了这个理论,例如我们设法更改目录。
我检查了https://wiki.jenkins-ci.org/display/JENKINS/SSH+Agent+Plugin 插件,但它似乎已损坏/无法正确设置。
【问题讨论】: