GitlabRunner в Docker перестает работать на armhf - PullRequest
0 голосов
/ 18 марта 2020

Для проекта нам дали репозиторий gitlab без участников, поэтому я хотел установить его на своем сервере raspi. Согласно этой проблеме нет готовых к использованию изображений контейнера gitlab-runner для arm64 (и armhf в этом отношении), поэтому я решил создать один для себя:

FROM ubuntu:18.04

SHELL ["/bin/bash", "-c"]
RUN apt-get update && apt-get install -y curl git
RUN apt-get update --fix-missing
RUN apt-get remove docker docker-engine docker.io containerd runc
RUN apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
RUN apt-get install -y docker-ce docker-ce-cli containerd.io
RUN curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_armhf.deb
RUN dpkg -i gitlab-runner_armhf.deb
RUN gitlab-runner register \
--non-interactive \
--url "URLTOGITLAB" \
--registration-token "GITLABTOKEN" \
--description "gitlab_docker_runner_for_cc" \
--tag-list "cc,docker" \
--executor "docker" \
--docker-image alpine:latest

CMD gitlab-runner start && tail -f /dev/null

This работает, если я использую для контейнера в интерактивном режиме. Поэтому, если я запускаю контейнер с bash и вручную запускаю gitlab-runner start, он запускает службу, и пока я сохраняю открытые задания gitlab bash, работающие по назначению (проверено с помощью .yml, который отображает системную информацию образа контейнера ).

Однако я хочу, чтобы это началось в автономном режиме в фоновом режиме, в идеале с помощью задачи @reboot crontab. Однако это просто не будет работать с командой по умолчанию. Я попытался gitlab-runner run и run-single, но затем я получаю следующие ошибки:

listen_address not defined, metrics & debug endpoints disabled  builds=0
[session_server].listen_address not defined, session endpoints disabled  builds=0

Поэтому я попытался использовать команду запуска, которая запускает бегун gitlab, поскольку я делаю это в интерактивном сеансе (см. CMD в Dockerfile), добавляя бесконечно запущенный tail -f /dev/null. Однако это тоже не сработает.

Так как я могу зарегистрировать контейнер gitlab-runner с docker в качестве исполнителя на raspi3?

Вот скрипт запуска, который я хотел бы начать с crontab @reboot:

#!/bin/bash
sudo docker run -d --name gitlab-runner --rm --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
      gitlab-runner
...