执行中的詹金斯脚本代码问题 shell
jenkins script code issue in execute shell
我正在使用 jenkins,我正在尝试使用 gitlab 将我的代码部署到产品服务器中。
所以我创建了一个新项目,选择了 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' 文件夹,所以说是 'not found'。
那么,我该如何解决这个问题?为什么 jenkins 不检查生产服务器中的 'myfolder'?
如果您需要将 yr 文件复制到外部服务器,您可以使用 "scp" (http://www.tecmint.com/scp-commands-examples/) or use some jenkins plugins (e.g as was already told https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin)
你的问题是在执行 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
不需要复制到服务器)
我正在使用 jenkins,我正在尝试使用 gitlab 将我的代码部署到产品服务器中。 所以我创建了一个新项目,选择了 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' 文件夹,所以说是 'not found'。
那么,我该如何解决这个问题?为什么 jenkins 不检查生产服务器中的 'myfolder'?
如果您需要将 yr 文件复制到外部服务器,您可以使用 "scp" (http://www.tecmint.com/scp-commands-examples/) or use some jenkins plugins (e.g as was already told https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin)
你的问题是在执行 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
不需要复制到服务器)