如何将 .gitlab-ci.yml 设置为仅 运行 一个节点上的任务并且仅更新或推送 repo 到其他节点(docker-swarm)?
How to set .gitlab-ci.yml to only run the tasks on one node and only update or push the repo to other nodes (docker-swarm)?
这是我存储库中的 .gitlab-ci.yml 文件:
image: docker
#services:
# - docker:dind
stages:
- build
- deploy
build-prod:
stage: build
only:
- master
tags:
- docker
script:
- docker network create -d overlay reprox
environment: master
deploy-prod:
stage: deploy
only:
- master
tags:
- docker
script:
- docker stack deploy -c ./site1/docker-compose.yml site1
- docker stack deploy -c ./site2/docker-compose.yml site2
- docker stack deploy -c ./site3/docker-compose.yml site3
- docker stack deploy -c ./reverse-proxy/docker-compose.yml proxy
environment: master
所以我的设置是 1 个管理节点和 2 个工作节点,我只需要 运行 在管理节点上构建和部署作业,其他节点只需要有 repo,不需要 运行在工作节点上执行 bash 命令。
我添加了一个带有 "docker" 标签的管理器 运行ner 和带有 "runner" 标签的工作节点。
删除您的 docker
标签。您可以将您的工作人员配置为 work only on specific tags
job1:
tags:
- dockernode_1
job2:
tags:
- dockernode_2
您之前使用的 docker
标签可能只是一种解决方法(或来自教程),可以让跑步者处理所有工作。如果你不想让跑步者关心标签,你可以让他 pick up all available jobs.
这是我存储库中的 .gitlab-ci.yml 文件:
image: docker
#services:
# - docker:dind
stages:
- build
- deploy
build-prod:
stage: build
only:
- master
tags:
- docker
script:
- docker network create -d overlay reprox
environment: master
deploy-prod:
stage: deploy
only:
- master
tags:
- docker
script:
- docker stack deploy -c ./site1/docker-compose.yml site1
- docker stack deploy -c ./site2/docker-compose.yml site2
- docker stack deploy -c ./site3/docker-compose.yml site3
- docker stack deploy -c ./reverse-proxy/docker-compose.yml proxy
environment: master
所以我的设置是 1 个管理节点和 2 个工作节点,我只需要 运行 在管理节点上构建和部署作业,其他节点只需要有 repo,不需要 运行在工作节点上执行 bash 命令。
我添加了一个带有 "docker" 标签的管理器 运行ner 和带有 "runner" 标签的工作节点。
删除您的 docker
标签。您可以将您的工作人员配置为 work only on specific tags
job1:
tags:
- dockernode_1
job2:
tags:
- dockernode_2
您之前使用的 docker
标签可能只是一种解决方法(或来自教程),可以让跑步者处理所有工作。如果你不想让跑步者关心标签,你可以让他 pick up all available jobs.