1

假设我有一个我希望 CircleCI 在完成测试序列后部署的存储库,代码如下:

deployment:
      staging:
        branch: master
        commands: 
          - scp -r wp-content/plugins/timespan username@servername.provider.host:public_html/wp-content/plugins

这在本地有效,因为我已经设置了必要的身份验证。但是对于 CircleCI,该上下文不存在,因此它提示输入密码,我无法通过将其放在下一行来输入密码,即- passw0rd.

所以我尝试了其他几件事但没有成功:1)在 Circle 中添加一个 ssh 密钥,它通过说他们不支持加密密钥来拒绝它。2)我尝试使用 sshpass 但无法将其添加为依赖项,因为不知道如何使用或使用哪个包管理器来获取它。

也许有人可以启发我?我不认为这离得太远了,但我错过了一些东西。

4

2 回答 2

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

我希望这能帮到您。

于 2016-08-31T11:25:13.787 回答
1

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

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

于 2016-08-28T05:57:14.503 回答