我在 NAT 后面的私有(private)子网中设置了两个 EC2 实例。 这些实例都在一个 AutoScalling 组中。 我想将 CodeDeploy 与我的 GitLab 存储库集成。
我现在能想到的就是在 appspec.yml 文件的 BeforeInstall Hook 上运行脚本。
还有其他方法吗?
最佳答案
GitLab 未实现与 AWS 服务的直接集成,但您可以解决这个问题。您可以像您描述的那样做一些事情,并实现所有安装/分发/身份验证逻辑,但是您实际上并没有从 CodeDeploy 中获得太多。您应该做什么取决于您要实现的目标。
推送时自动部署: 如果您将他们的 WebHooks 与可以向 AWS 进行身份验证的东西桥接,您可以在提交到 GitLab 时获得自动部署。这可能看起来像:
- GitLab 中的 Web Hook 将推送请求发送到您控制的 Jenkins 服务器。
- Jenkins 服务器使用 Git 插件来拉取源代码。
- Jenkins 服务器运行您的构建和测试步骤。
- Jenkins 服务器使用 CodeDeploy 插件将构建工件上传到 S3 并创建部署。
如果您想进行手动部署,您可以执行与上述相同的操作,但手动触发 Jenkins 构建。
仅手动部署: 当您要部署时执行以下操作:
- 使用 git checkout 您要部署的提交。
- 在本地运行构建和测试。
- 执行 AWS CLI 部署推送命令以将您的构建工件上传到 S3。
- 使用上传的包在 CodeDeploy 中创建部署。
关于amazon-web-services - AWS CodeDeploy 与 GitLab 的集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957162/