Как настроить .gitlab-ci.yml, чтобы запускать задачи только на одном узле и обновлять или отправлять репо на другие узлы (docker-swarm)? - PullRequest
0 голосов
/ 18 октября 2019

Это мой файл .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 рабочих узла, и мне нужно только запускать задания по сборке и развертыванию на узле менеджера,другие узлы просто должны иметь репо, не нужно запускать команды bash на рабочих узлах.

Я добавил управляющего бегуна с тегом "docker" и рабочих узлов с тегом "бегуна".

1 Ответ

0 голосов
/ 18 октября 2019

Удалите тег docker. Вы можете настроить своих работников на работу только с определенными тегами

job1:
  tags:
    - dockernode_1
job2:
  tags:
    - dockernode_2

Ваш ранее использованный тег docker, вероятно, был просто обходным путем (или из учебника), чтобы заставить бегунов работать надвсе рабочие места. Если вы не хотите, чтобы бегун заботился о тегах, вы можете заставить его забрать все доступные задания .

...