有没有一种方法可以从Travis将应用部署到Amazon ec2?

3
我希望在我的测试成功后,将我的应用部署到亚马逊EC2(Ubuntu实例)上。
1-)我有一个GitHub存储库,其中包含一个项目和travis.yml文件。
2-)Travis可以检查我的项目并且测试成功了。
3-)当它成功时,需要一个shell命令来将我的应用程序部署到亚马逊EC2。(此步骤有些困惑)
我已经学到了这些,但是我无法做出任何反应。 我知道在travis.yml文件中应该像这样:
我知道一些答案,但是我无法解决。 这些是我的问题的解决方案。
after_success:

    curl --ftp-create-dirs -T uploadfilename -u $FTP_USER:$FTP_PASSWORD ftp://sitename.com/directory/myfile

在这个解决方案中,我找不到我的ftp_user和密码。如果我知道它们,是否可以使用scp传输数据。
另一个解决方案是:(使用pem文件)
after_success:

     scp -i "[pemFileName].pem" [A File] [hostname]@ec2-02-50-258-231.eu-central-1.compute.amazonaws.com:~/.

"after_success" 后面的代码在终端中可以工作,但问题在于我无法将 pem 文件上传到 Travis。而且我不想将 pem 文件推送到 Github。(出于安全考虑)

简要问题:当我的测试在 Travis 上成功时,如何将我的应用程序部署到 Amazon EC2?

1个回答

1
Travis具有加密/解密存储在您的git存储库中的文件的能力。您可以存储所需的私钥的加密版本,以便scp到您的EC2实例中。
请参见https://docs.travis-ci.com/user/encrypting-files/
在我的情况下,我使用一个Bash脚本,如果满足正确的条件,(1) 根据Travis的说明解密文件;然后(2) 使用解密的.pem密钥将构建传输到EC2实例上的scp
请注意,您的scp命令应该包含一些处理StrictHostKeyChecking的方法。这将完全禁用它: scp -i [path/to/id/file] -o StringHostKeyChecking=no [source] [destination] 虽然更安全的方法是获取主机密钥指纹(例如,ssh-keyscan [host])并将其作为scp命令的一部分使用: scp -i [path/to/id/file] -o UserKnownHostsFile=path/to/custom/known_hosts [source] [destination]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接