使用CircleCI和SCP部署到服务器

时间:2016-08-25 22:53:48

标签: ssh deployment scp circleci sshpass

说我有一个回购,我希望CircleCI在完成测试序列后部署,代码是这样的:

PublishAllXmlRequest publishRequest = new PublishAllXmlRequest();
serviceProxy.Execute(publishRequest);

这在本地有效,因为我已经设置了必要的身份验证。但是对于CircleCI来说,那个上下文并不存在,所以它会提示输入一个我无法通过下一行输入的密码,即deployment: staging: branch: master commands: - scp -r wp-content/plugins/timespan username@servername.provider.host:public_html/wp-content/plugins

所以我尝试了其他一些没有成功的事情:1)在Circle中添加一个ssh密钥并拒绝说明他们不支持加密密钥。 2)我尝试使用sshpass,但由于不知道使用哪个包管理器来获取它,因此无法将其添加为依赖项。

也许有人可以开导我?我不认为这太过分了,但我错过了一些东西。

2 个答案:

答案 0 :(得分:2)

您不必加密SSH密钥。 我正在使用CircleCi完全相同的事情,只需将未加密的密钥添加到您的SSH权限(您可以在“权限”部分的CircleCi上的项目设置中找到它。当然,您需要服务器中的公钥authorized_keys

否则,您可以通过circle.ymlhttps://circleci.com/docs/installing-custom-software/

添加其他套餐
  

您可以使用circle.yml文件对构建环境运行任意命令。您可以通过sudo对您的环境进行root访问,因此您应该能够根据自己的内容对其进行自定义!

示例:

dependencies: 
  pre:
    - sudo apt-get update; sudo apt-get install ssh-pass

我希望这会对你有所帮助。

答案 1 :(得分:1)

sshpass只需要在客户端安装。您无需在服务器上安装它。

我对CircleCI不熟悉,但听起来你正试图让它在服务器上安装sshpass,这是完全没必要的。在运行CircleCI的服务器上安装后,只需在CircleCI部署脚本中执行sshpass -ppassw0rd scp ...,就可以了。