是否可以将 AWS CodePipeline 与 Lightsail 结合使用?

Is it possible to use AWS CodePipeline with Lightsail?

我整天都在工作,找不到答案。所以我问你们:是否可以将 AWS Pipeline 与 AWS Lightsail 一起使用?

我的 objective 是将代码存储在 CodeCommit 中,并使用 CodeBuild、CodeDeploy、CodePipeline 和 S3 在 Lightsail 实例中创建持续部署。

这些是我认为完成任务必须遵循的步骤:

[x] setup a Lightsail instance
[x] create an IAM user and set permissions
[x] transfer my repository to CodeCommit
[x] create an S3 bucket to hold the build artifacts
[x] create a CodeBuild project to build the artifacts
[x] create a buildspec.yml file with my build steps
[ ] create a CodeDeploy project to deploy my application
[ ] create a CodePipeline project to trigger the build when I commit to certain branch

如您所见,我快完成了。但是我找不到任何方法将我的 Lightsail 实例与 CodeDeploy 一起使用。所以,我的问题是:这可能吗?有什么限制吗?我错过了一些非常基本的东西吗?还有其他方法可以用 Lighsail 制作 CD 吗?对不起,我在这里有点疯狂啊哈哈。

今天,2017 年 8 月 16 日,无法集成它们。

asked the same question on AWS forums 他们回答说这些技术还没有集成,因为它们是相互分离的。

嗯,我想我得另辟蹊径了。

我不是这里的专家,但我认为实现它的方法是在 CodeBuild 中使用自定义脚本,而不是使用 CodeDeploy。

CodeDeploy 有很多自定义内容支持回滚和高级内容(意味着您必须在目标服务器上安装代理等)。

CodeBuild 专为 运行 脚本而设计,因此我认为添加一个部署脚本(在您的测试后运行)通过 SSH 连接到您的 Lightsail 实例并部署任何更改是合理的文件(类似于您使用 Travis CI 等在开源中执行此操作的方式)。

具体来说,我之前使用 npm 上的 dploy 包来进行实际的 SFTP 上传。它是 Git-aware,所以它只上传自上次修订以来的更改(但如果你不关心它,你可以只 rsync)。

我最近遇到了同样的挑战并且成功了。

需要使用 CodeDeploy 将 Lightsail 实例注册为 on-premise 实例。在实例本身上,需要安装和配置 CodeDeploy 代理。

我已经写了一篇 post 关于如何在 my blog 上设置它的文章。

https://scratchpad.blog/howto/how-to-use-codedeploy-with-aws-lightsail/

遵循这些步骤可以帮助您将 lightsail 部署为本地实例,并将 codedeploy 配置为部署到本地实例