LINUX.ORG.RU
ФорумAdmin

Можно ли на один gitlab-runner повесить несколько репозиториев?

 


0

1

Приветствую!

Я начинающий devos и пока делаю первые шаги. И вот появился у меня вопрос, на который Google с Яндексом не дают ответа.

Есть один web сервер на котором должно работать три сайта(в контейнерах). У каждого сайта свой репозиторий. Теперь я к web серверу подключил gitlab-runner, успешно его соединил в репозиторием №1, настроив gitlab-runner именно для репозиторием №1. Настроил автоматическую сборку и всё такое.

А теперь когда перешёл к сайту №2, то оказалось что gitlab-runner на web сервере настроен на репозиторием №1. Если я его сейчас перенастрою на репозиторий №2, то тогда перестанет работать сборка с репозитория №1.

Ребят может кто сталкивался с таким, подскажите как действовать в таком случаи?

Ответ на: комментарий от Demacr

То есть получается можно сделать, что бы один gitlab-runner на web сервере брал данные с репозитория №1 и собирал сайт сайт №1. При коммите в репозиторий №2 gitlab-runner собирал сайт №2. А при коммите в репозиторий №3 gitlab-runner собирал сайт №3 ?

Если это возможно, то как можно настроить gitlab-runner на такое. Потому как если ввести команду gitlab-runner register то получается настройка только на один репозиторий.

Andrei_IW ()
Ответ на: комментарий от Andrei_IW

Погоди, ты регаешь gitlab-runner на организацию/себя. Ты при регистрации указываешь тег для runner’а, и потом ты можешь в ci явно указывать через директиву tags:

Build:
  image: ubuntu
  stage: build
  script:
    - echo "test"
  tags:
    - my-runner

upd: ты кажется создаёшь runner в рамках репы, если создавать на уровне организации или группы репозиториев, то сможешь использовать на несколько репозиториев.

Demacr ()
Последнее исправление: Demacr (всего исправлений: 1)
Ответ на: комментарий от xfilx

А как это? Разве gitlab-runner register не перетирает старые настройки новыми? А если на gitlab-runner можно несколько конфигов прицепить, то это было бы здорово. Но только как это сделать?

Andrei_IW ()
Последнее исправление: Andrei_IW (всего исправлений: 1)
Ответ на: комментарий от aquadon

Посмотрев файлик /etc/gitlab-runner/config.toml я увидел секцию

[[runners]]
  name = "Deploy 111111"
  url = "https://gitlab.com/"
  token = "111111"
  executor = "shell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.custom]
    run_exec = ""

Может если ещё добавить ещё одну такую секцию, в которой будет token от другого репозитория, как думайте заработает runner если я сделаю коммит в репозитории №2 ?

Andrei_IW ()
Последнее исправление: Andrei_IW (всего исправлений: 1)
Ответ на: комментарий от xfilx

Попробовал я дописать в конфиг

[[runners]]
    name = "Deploy repa 1"
    url = "https://gitlab.com/"
    token = "token repa 1"
    executor = "shell"
    [runners.custom_build_dir]
    [runners.cache]
      [runners.cache.s3]
      [runners.cache.gcs]
    [runners.custom]
      run_exec = ""
 
  [[runners]]
    name = "Deploy repa 2"
    url = "https://gitlab.com/"
    token = "token repa 2"
    executor = "shell"
    [runners.custom_build_dir]
    [runners.cache]
      [runners.cache.s3]
      [runners.cache.gcs]
    [runners.custom]
      run_exec = ""

В репозитории 2 runner не хочет регистрироваться. А в логах посыпались ошибки, типа: ERROR: Checking for jobs… forbidden runner=oxaZ2-R5 и ERROR: Runner https://gitlab.com/token repa 2 is not healthy and will be disabled!

Очень странно. А должно работать. Может ещё чего не хватает?

Andrei_IW ()
Ответ на: комментарий от Andrei_IW

Всё разобрался. Оказывается что в параметре token хранится токен не в открытом виде, а в зашифрованном, или хэше. И ещё, то чего нет в офф.документации. В общем можно много раз выполнять команду gitlab-runner register . И при каждом таком конфигурировании будет создаваться в конфиге config.toml новый раздел [[runners]] в который поместят характеристики нового репозитория.

То есть получается что один runner может обслужить сколько угодно репозиториев. В общем вопрос решён. Ребят большое спасибо что откликнулись и поддержали ответами!

Andrei_IW ()