我使用Gitlab运行程序,可以在单个服务器上正常运行。 gitlab-ci.yml很简单:
stages:
- test
- deploy
test:
stage: test
image: php
tags:
- docker
script:
- echo "Run tests..."
deploy:
stage: deploy
tags:
- shell
script:
- sh deploy.sh
正如我所说,这对单个服务器来说很好,但是在另一台服务器上部署相同的应用程序?我尝试使用相同的gitlab-runner配置(相同的conf.toml)但是它只是随机更新其中一个。
是否有某种方式gitlab Ci由超过1个跑步者触发并根据gitlab-ci.yml部署所有这些?
答案 0 :(得分:4)
您可以从不同的服务器注册多个运行程序(例如标记为 serverA 和 serverB )并具有多个部署作业,每个作业由不同的运行程序执行。这是因为您可以在作业中设置多个标签,并且只使用具有所有标签的跑步者。
stages:
- test
- deploy
test:
stage: test
image: php
tags:
- docker
script:
- echo "Run tests..."
deployA:
stage: deploy
tags:
- shell
- serverA
script:
- sh deploy.sh
deployB:
stage: deploy
tags:
- shell
- serverB
script:
- sh deploy.sh
但是,考虑到其中一个部署作业失败的情况 - 这最终会导致服务器上有两个不同版本的代码。根据您的情况,这可能是也可能不是问题。
答案 1 :(得分:2)
是的,只需为同一阶段设置两个作业:
stages:
- deploy
deploy:one:
stage: deploy
script:
- echo "Hello CI one"
deploy:two:
stage: deploy
script:
- echo "Hello CI two"
如有必要,您可以在跑步者身上使用tags
来选择使用哪一个。
答案 2 :(得分:0)
自 2016 年以来,您现在拥有 Environments and deployments
<块引用>环境描述了代码的部署位置。
每次 GitLab CI/CD 将一个版本的代码部署到环境中时,都会创建一个部署。
亚搏体育app:
它有 integrates well with Prometheis,而且,对于 GitLab 13.11(2021 年 4 月),您甚至:
<块引用>在 GitLab 13.2 中,我们添加了在项目的 CI/CD 设置中创建 deploy freeze 时间段的功能。
此功能可帮助团队避免意外部署、减少不确定性并降低部署风险。
但是,无法更新部署冻结。
在 GitLab 13.11 中,我们添加了编辑现有部署冻结的功能。这样,您就可以更新冻结期以满足您的业务需求。
参见 Documentation 和 Issue。
如“gitlab-ci.yml
deployment on multiple hosts”所示,可以使用YAML anchors触发多环境并行部署,即“多台服务器”。