gpt4 book ai didi

docker - gitlab-ci.yml部署在多个主机上

转载 作者:行者123 更新时间:2023-12-02 21:03:04 26 4
gpt4 key购买 nike

我需要在多个服务器上部署我的应用程序。

我已经将我的源代码托管在gitlab-ci上。
我有安装环境变量和.gitlab-ci.yml文件

它非常适合单台服务器:我可以构建docker镜像并将该镜像推送到注册表。
然后,我将这个镜像部署在kubernetes基础架构上。
所有操作均在.gitlab-ci.yml中进行了描述

我需要做的是为每个服务器“重复” .gitlab-ci.yml步骤。
我需要为每个服务器使用不同的环境变量集。 (对于我的应用程序的每次升级,每台服务器我都需要一个docker镜像)。

有没有办法用gitlab-ci做到这一点?

谢谢

**编辑**

这是我的.gitlab-ci.yml:

stages:
- build
- deploy

build:
stage: build
script:
- docker image build -t my_ci_registry_url/myimagename .
- docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
- docker push my_ci_registry_url/myimagename

deploy:
stage: deploy
environment: production
script:
- kubectl delete --ignore-not-found=true secret mysecret
- kubectl create secret docker-registry mysecret --docker-server=$CI_REGISTRY --docker-username=$CI_REGISTRY_USER --docker-password=$CI_REGISTRY_PASSWORD
- kubectl apply -f myapp.yml
- kubectl rollout restart deployment/myapp-deployment

最佳答案

为了使用不同的环境变量运行同一作业,可以使用Yaml Anchors

例如:

stages:
- build
- deploy

.deploy: &deploy
stage: deploy
environment: production
script:
- some use of $SPECIAL_ENV # from `variables` defined in each job
- some use of $OTHER_SPECIAL_ENV # from `variables` defined in each job

build:
stage: build
script:
- ...

deploy env 1:
variables:
SPECIAL_ENV: $SPECIAL_ENV_1 # from `CI/CD > Variable`
OTHER_SPECIAL_ENV: $OTHER_SPECIAL_ENV-1 # from `CI/CD > Variable`
<<: *deploy

deploy env 2:
variables:
SPECIAL_ENV: $SPECIAL_ENV_2 # from `CI/CD > Variable`
OTHER_SPECIAL_ENV: $OTHER_SPECIAL_ENV_2 # from `CI/CD > Variable`
<<: *deploy

deploy env 3:
variables:
SPECIAL_ENV: $SPECIAL_ENV_3 # from `CI/CD > Variable`
OTHER_SPECIAL_ENV: $OTHER_SPECIAL_ENV_3 # from `CI/CD > Variable`
<<: *deploy

这样,在 deploy阶段,这3个作业将运行(并行)。
如果变量包含敏感数据,则可以将其保存在 Settings > CI/CD > Variable中。如果没有,只需将它们写在 .gitlab-ci.yml

关于docker - gitlab-ci.yml部署在多个主机上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59546865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com