Gitlab CI/CD - 如何从一个分支部署多个环境?

Gitlab CI/CD - How to deploy multiple environments from one branch?

需要将项目部署到具有多个环境“开发、暂存、生产”和多个国家“德国、法国、西班牙”(示例)的 kubernetes。

到目前为止,我一直在部署到德国的原始项目中使用管道,它是通过 gitlab ci“开发、暂存、生产”“环境”完成的。那部分还可以。

对于其他国家,我是镜像工程,在镜像工程中添加不同的变量。然后两个国家都部署好了。

问题是即使代码库相同,每个国家/地区都构建一个单独的映像。因此,对于 5 个国家/地区,每个环境构建 5 个图像而不是 1 个图像。

当前解决方案: 我现在已经确定,我将在同一个项目中为每个国家/地区添加额外的_{{country_id}}_{{environment}}环境。

那么例如,我将为开发环境构建映像并将其部署到 extra_GER_development、extra_FRA_development 和 extra_SPA_development。

现在我已经找到了很多关于如何为“开发、暂存、生产”进行部署的信息,但是 none 如何进一步拆分它。

问题:对于如何为多个环境部署单个镜像,有没有更好的方法?

关于可能的解决方案文章的任何信息也被应用ci。谢谢。

如果 image 你的意思是 Docker Image,你可以构建一个图像并为国家/地区设置 5 个或更多标签,并将不同的标签推送到存储库或将每个标签部署到他们的环境中。

由于这是一个重复的过程,您还可以编写 shell 脚本并使该过程自动化。您可以传递环境或国家/地区列表,遍历列表并设置适当的标签或将它们一一部署。

考虑拥有一个包含所有国家/地区的环境变量;您可以编写如下 shell 脚本:

#!/bin/bash

for country in "$@"
do
        # set taga
        docker tag SOURCE_IMAGE:tag TARGET_IMAGE:tag
        # or maybe deploy
        ...
done

并在 Gitlab CI 脚本中调用此脚本:

...

deploy:
  stage: deploy
  script:
    - ./set-country-tags ${COUNTRIES}
  ...