说我有一个回购,我希望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,但由于不知道使用哪个包管理器来获取它,因此无法将其添加为依赖项。
也许有人可以开导我?我不认为这太过分了,但我错过了一些东西。
答案 0 :(得分:2)
您不必加密SSH密钥。
我正在使用CircleCi完全相同的事情,只需将未加密的密钥添加到您的SSH权限(您可以在“权限”部分的CircleCi上的项目设置中找到它。当然,您需要服务器中的公钥authorized_keys
。
否则,您可以通过circle.yml
:https://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 ...
,就可以了。