执行shell中的jenkins脚本代码问题

时间:2015-04-14 12:59:28

标签: git shell jenkins

我使用jenkins,我正在尝试使用gitlab将我的代码部署到prod服务器中。 所以我创建了一个新项目,选择了git项目和分支,选择了Poll SCM。

现在在执行shell 中,我使用的脚本代码如下:

ssh user@prod-server // in log, user got logged in
cd /myfolder   // in log showing 'myfolder' not found

似乎jenkins在本地服务器而不是prod服务器中检查'myfolder'文件夹,所以说'找不到'。

那么,我该如何解决这个问题呢?为什么jenkins没有在producion服务器中检查'myfolder'?

2 个答案:

答案 0 :(得分:1)

执行ssh命令后,您没有交互式会话的问题(与您坐在终端时的情况不同)

如果它只是一个命令,你可以将其传递给ssh,如下:
ssh user@prod-server 'cd /myfolder'

你甚至可以把几个命令连在一起:
ssh user@prod-server 'cd /myfolder && cat myfile'

使用以下命令分隔符:
- ;始终执行下一个命令 - &&仅在上一次成功时才执行下一个命令 - ||仅在先前失败时才执行下一个命令。

但是一旦你得到太多的命令,最好将它们放在shell脚本中,然后执行那个shell脚本:
ssh user@prod-server 'bash -s' < /path/to/local_script.sh
(注意,在上面的示例中,local_script.sh不需要复制到服务器)

答案 1 :(得分:0)

如果您需要将yr文件复制到外部服务器,可以使用&#34; scp&#34; (http://www.tecmint.com/scp-commands-examples/)或使用一些jenkins插件(例如已经告诉https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin