我们在Gitlab中拥有应用程序代码(Java),我们正在使用Gitlab CI来构建,测试和创建docker映像(然后将其推送到AWS ECR)
要配置我们的基础设施,我们使用aws cdk(在Gitlab中的一个单独项目中)
每当我们在应用程序(java)中进行一些更改时,我们都必须手动以基础代码(aws cdk)更新docker标签并推送它,以便更新部署。
有没有办法使它自动化?
PS。我们不能在一个存储库中同时包含Java和Infra代码
答案 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)
我如何理解您的问题:
通常,您可以使用标签来防止这种行为。
但是,为什么不使用 latest
标签标记您的应用图像并在 cdk 代码中使用它?