Для проекта нам дали репозиторий 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