【问题标题】:Execute remote script in Jenkins在 Jenkins 中执行远程脚本
【发布时间】: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 插件,但它似乎已损坏/无法正确设置。

【问题讨论】:

    标签: git shell jenkins


    【解决方案1】:
    #!/bin/bash
    ssh user@perftest03 '~/setup_environment.sh load/LoadConfig.xml'
    

    解决了它,出于某种原因,在谷歌搜索后我认为我需要 -f 标志才能工作。寻找答案的方向错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      相关资源
      最近更新 更多