2016-06-22 108 views
1

我想在我的测试成功时将我的应用程序部署到Amazon ec2(Ubuntu实例)。有没有办法从Travis部署应用程序到Amazon ec2?

  1. 1-)我有git hub repository也是一个project和travis.yml。 2)特拉维斯可以检查我的项目,它会成功。

    3-)当成功,一个shell命令要我的应用程序部署到Amazon EC2上。(困惑步骤)

我已经学会了这些,但我不能做任何事情来 我知道特拉维斯.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文件特拉维斯后写的代码。 (为了安全起见)

简要问题:如何在我的测试成功完成特拉维斯时将应用程序部署到Amazon EC2?

回答

1

Travis有能力加密/解密存储在你的git仓库中的文件。您可以将scp所需的私钥的加密版本存储到您的EC2实例中。

请参阅https://docs.travis-ci.com/user/encrypting-files/。 (1)根据特拉维斯的指示解密文件;(2)根据特拉维斯的指示解密文件;(3)然后(2)scp使用解密的.pem密钥构建到EC2实例。

请注意,您的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]

相关问题