首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多台主机上部署gitlab-ci.yml

在多台主机上部署gitlab-ci.yml
EN

Stack Overflow用户
提问于 2020-01-01 01:14:05
回答 1查看 1.7K关注 0票数 1

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

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

它适用于单个服务器:我可以构建docker镜像并将此镜像推送到注册表。然后,我将在kubernetes基础设施上部署此镜像。所有操作都在.gitlab-ci.yml中描述

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

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

谢谢

**编辑**

下面是我的.gitlab-ci.yml:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-01-03 02:17:32

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

例如:

代码语言:javascript
复制
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 stage上,3个作业将(并行)运行。

如果变量包含敏感数据,则可以将其保存在Settings > CI/CD > Variable中。如果没有,只需将它们写入您的.gitlab-ci.yml

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59546865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档