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}
...
需要将项目部署到具有多个环境“开发、暂存、生产”和多个国家“德国、法国、西班牙”(示例)的 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}
...