2015-04-14 80 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