如何使用Gitlab CI和AWS CDK获得CD

时间:2020-04-06 12:10:18

标签: amazon-web-services docker gitlab-ci continuous-deployment aws-cdk

我们在Gitlab中拥有应用程序代码(Java),我们正在使用Gitlab CI来构建,测试和创建docker映像(然后将其推送到AWS ECR)

要配置我们的基础设施,我们使用aws cdk(在Gitlab中的一个单独项目中)

每当我们在应用程序(java)中进行一些更改时,我们都必须手动以基础代码(aws cdk)更新docker标签并推送它,以便更新部署。

有没有办法使它自动化?

PS。我们不能在一个存储库中同时包含Java和Infra代码

4 个答案:

答案 0 :(得分:0)

我没有使用Gitlab的经验,因此遵循以下建议更像是一个想法,而不是确切的指南:

以基础代码更新docker标签可以用应用程序构建中的其他步骤代替,该步骤将在AWS Parameter Store变量中设置新标签值。

可以通过创建触发器来自动执行基础结构构建的运行,该触发器在应用程序构建成功完成后导致基础结构运行的运行。

然后,基础代码构建将从AWS Parameter Store变量读取新的标签值。

答案 1 :(得分:0)

如果您使用的是付费版GitLab,则可以使用以下功能来触发下游管道(在不同的存储库中):https://docs.gitlab.com/ee/ci/multi_project_pipelines.html

否则,您可以通过以下API来完成此操作:https://docs.gitlab.com/ee/ci/triggers/

通过两种方式,您都可以传递ECR标签的version参数并将其传递给CDK以用于提取图像标签。

答案 2 :(得分:0)

根据更广泛的架构上下文,我的预感是您(集体)希望进行某种促销活动 - 验证未更改的库等是否存在安全漏洞,在发布前将应用程序提供给其他集成团队进行测试- 将这项活动集中起来将是一个自然的步骤。也许 CDK 所有者在面临集成挑战时会重视捕捉问题? 关键是,CDK 项目中的重新标记和最终发布由提升作业处理,当有更改时,由多个项目调用。

答案 3 :(得分:0)

我如何理解您的问题:

  • 您将应用打包到 Docker 镜像中并推送到注册表
  • 您希望 cdk 中的基础代码自动选择下一个标签

通常,您可以使用标签来防止这种行为。

但是,为什么不使用 latest 标签标记您的应用图像并在 cdk 代码中使用它?