LINUX.ORG.RU
решено ФорумAdmin

gitlab-ci services для раннеров на разных архитектурах

 ,


0

2

Привет.

Планируется добавить gitlab-runners на несколько RaspberryPi (связано с подключением железа к RPi).

Но в случае использования services в gitlab-ci jobs, как будет происходить выбор нужной архитектуры докер-образа, который требуется?

Т.е.


http1:
  tags:
    - big_x86_env
  services:
    - name: $MY_DOCKER_REGISTRY/simple-http
      alias: simple
  script:
    - curl -sSL 'http://simple:23232/xxx`

http2:
  tags:
    - RPi_env
  services:
    - name: $MY_DOCKER_REGISTRY/simple-http
      alias: simple
  script:
    - curl -sSL 'http://simple:23232/xxx`

Интересует, как сделать доступным $MY_DOCKER_REGISTRY/simple-http для x86 и для arm@rpi?

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

добавь на runner-ы теги, после этого каждый job можно привязать к определенному runner-у или их группу определённой job или их группу

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

так я хочу понять как сделать $MY_DOCKER_REGISTRY/simple-http общим одним и тем же для rpi раннеров и x86 раннеров. с тегами нет проблем

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Ок. Суть такова, что можно использовать средства докера для создания мультиархитектурных образов для simple-http. Тогда, в зависимости от архитектуры хоста, где происходит docker pull, стягивается image соответствующей архитектуры. Подробнее тут https://community.arm.com/tools/b/blog/posts/deploying-multi-architecture-docker-registry

Как я понял, имея собственный (private) registry, мы сначала создаем и пушим в него simple-http-amd64 и simple-http-arm32v7, затем делаем магический Manifest, передаем его в registry, и у нас получается simple-http для разных архитектур.

Мне манипуляции с манифестом сейчас кажутся оверхедом, я остановился на явном указании архитектуры в имени образов simple-http-amd64 и simple-http-arm32v7, и пока так и буду их использовать явно:

http1:
  tags:
    - big_x86_env
  services:
    - name: $MY_DOCKER_REGISTRY/simple-http-amd64
      alias: simple
  script:
    - curl -sSL 'http://simple:23232/xxx`

http2:
  tags:
    - RPi_env
  services:
    - name: $MY_DOCKER_REGISTRY/simple-http-arm32v7
      alias: simple
  script:
    - curl -sSL 'http://simple:23232/xxx`

Само собой, simple-http-* должны быть собраны, каждый согласно своей архитектуры. Для создания армовых образов под RPi у меня отдельный хост есть для этого, он и раньше использовался.

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

Как я понял, имея собственный (private) registry, мы сначала создаем и пушим в него simple-http-amd64 и simple-http-arm32v7

у нас используется один образ для сборки под 4 платформы (mipsel, sh4 и два arm)
если у Вас нет требования собирать на целевой системе, то почему бы не воспользоваться кросс-компиляцией?

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

У нас есть требования запускать на целевой платформе, а именно на amd64 и RPi3. Для запуска требуются всякие тулзы и окружения, которые мы сейчас планируем обеспечить gitlab-ci-сервисами, которые удобно реентерабельны. И для RPi вот нужны отдельные образа с этими сервисами.

Поняно, что тот же условный simple-http написанный на Go элементарно многоплатформенный. Но образы simple-http-amd64 и simple-http-arm32v7 с ним приходится собрирать отдельные.

Это мне и не было понятно сначала, когда я видел, как используется какой-нибудь образ ruby:2.2 на разных платформах, но не знал как это сделать самомоу.

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

Вы же понимаете, что

У нас есть требования запускать на целевой платформе, а именно на amd64 и RPi3

и

я хочу понять как сделать $MY_DOCKER_REGISTRY/simple-http общим одним и тем же для rpi раннеров и x86 раннеров

взаимоисключающие?

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

ну какой-нибудь ‘bash:4’ же работает.

Если что, я имел ввиду имя $MY_DOCKER_REGISTRY/simple-http. Неужели непонятно написал? Я же собираю $MY_DOCKER_REGISTRY/simple-http-amd64 и $MY_DOCKER_REGISTRY/simple-http-arm32v7 образы отдельно, а с помощью манифеста их можно объединить под одним именем $MY_DOCKER_REGISTRY/simple-http без суффикса. Если я ничего не напутал. К тому же я это делать теперь не собираюсь. Но теперь понятно, как оно работает: поддержка со стороны registry выдачи образа нужной архитектуры

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.