2015-04-14 112 views
0

Iam使用jenkins,我试图使用gitlab将我的代码部署到prod服务器中。 所以我创建了一个新项目,选择了git项目和分支,选择了Poll SCM。现在jenkins在执行shell中的脚本代码问题

执行shell,我使用下面的脚本代码:

ssh [email protected] // in log, user got logged in 
cd /myfolder // in log showing 'myfolder' not found 

好像詹金斯检查内部本地服务器“MyFolder文件”文件夹,而不是督促服务器等说法为“未发现” 。

那么,我该如何解决这个问题?为什么詹金斯不检查生产服务器中的“我的文件夹”?

+0

有一些插件,如[通过SSH发布](https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin),可以帮助你 – Victor

+0

@Victor As I使用gitlab,我应该输入'源文件','删除前缀'?我的意思是:https://wiki.jenkins-ci.org/download/attachments/53608875/pos-default.png?version=1&modificationDate=1321575097000 顺便说一句,在'构建触发器'中,iam也使用这个选项:构建时将更改推送到GitLab。 GitLab CI服务网址 – user3815806

回答

1

你的问题,你没有一个交互式会话,后执行ssh命令(不像你有什么,如果你坐在终端)

如果它只是一个命令,你可以把它ssh,像这样:
ssh [email protected] 'cd /myfolder'

你凑合连维链多个命令在一起:
ssh [email protected] 'cd /myfolder && cat myfile'

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

但是,一旦你得到太多的命令,最好把它们放在一个shell脚本,并执行shell脚本:
ssh [email protected] 'bash -s' < /path/to/local_script.sh
(注意,在上述例子中,local_script.sh并不需要被复制到服务器)

+0

兄弟,可以ü请看看这里:http://stackoverflow.com/questions/29644940/syntax-error-in-shell-script-jenkins – user3815806

+0

@ user3815806回答这个问题的人给出了正确的答案。我在那里评论了另一种可供选择的方法。 – Slav