-
-
Save denisxab/2f35c8f91ed1207116760dab3f86bdd6 to your computer and use it in GitHub Desktop.
version: "3.5" | |
services: | |
gitlab: | |
image: gitlab/gitlab-ce:latest | |
hostname: "localhost" | |
restart: unless-stopped | |
environment: | |
GITLAB_OMNIBUS_CONFIG: | | |
external_url 'http://localhost' | |
gitlab_rails['gitlab_shell_ssh_port'] = 8822 | |
gitlab_rails['initial_root_password'] = 'CHANGEME123' | |
ports: | |
- "8000:80" | |
- "8822:22" | |
volumes: | |
- ./data/docker/gitlab/etc/gitlab:/etc/gitlab | |
- ./data/docker/gitlab/var/opt/gitlab:/var/opt/gitlab | |
- ./data/docker/gitlab/var/log/gitlab:/var/log/gitlab | |
networks: | |
- gitlab_net | |
dind: | |
image: docker:20-dind | |
restart: always | |
privileged: true | |
environment: | |
DOCKER_TLS_CERTDIR: "" | |
command: | |
- --storage-driver=overlay2 | |
volumes: | |
- ./data/dind/docker:/var/lib/docker | |
networks: | |
- gitlab_net | |
depends_on: | |
- gitlab | |
gitlab-runner: | |
image: gitlab/gitlab-runner:alpine | |
restart: unless-stopped | |
environment: | |
- DOCKER_HOST=tcp://dind:2375 | |
# command: | |
# # Скачаем docker чтобы можно было увидеть какие есть контейнеры | |
# - apk update | |
# - apk add --no-cache docker | |
# - addgroup gitlab-runner docker | |
volumes: | |
- ./config:/etc/gitlab-runner:z | |
- ./data/runner/cache:/cache | |
- /var/run/docker.sock:/var/run/docker.sock | |
networks: | |
- gitlab_net | |
depends_on: | |
- gitlab | |
register-runner: | |
restart: "no" | |
image: gitlab/gitlab-runner:alpine | |
environment: | |
- REGISTRATION_TOKEN=${REGISTRATION_TOKEN} | |
- CI_SERVER_URL=http://gitlab | |
command: | |
- register | |
- --non-interactive | |
- --locked=false | |
# Имя для runner, обычно название такое же как у проекта | |
- --name=${RUNNER_NAME} | |
- --executor=docker | |
# Url до своего gitlab сервера, тут он у нас в одной сети | |
- --url=http://gitlab | |
- --clone-url=http://gitlab | |
- --docker-image=docker:20-dind | |
- --docker-volumes=/var/run/docker.sock:/var/run/docker.sock | |
# Чтобы контейнре мог иметь сетевой доступ к контейнеру с gitlab | |
- --docker-network-mode=host | |
volumes: | |
- ./config:/etc/gitlab-runner:z | |
- ./data/dind/docker:/var/lib/docker | |
networks: | |
- gitlab_net | |
depends_on: | |
- dind | |
networks: | |
gitlab_net: | |
name: gitlab_net |
Привет. в разделе "Управление GitLab Runner" вроде ошибка
Для выполнения команд войдите в контейнер
register-runner
должно быть
Для выполнения команд войдите в контейнер
gitlab-runner
Ещё почему-то при выполнении docker-compose restart register-runner
у меня не подтянулись значения из .env. Такой вариант сработал:
docker compose stop register-runner
docker compose up -d register-runner
Добрый день следую вашей инструкции
docker ps
выводит у меня 3 контейнера
e9af7df0c982 docker:20-dind "dockerd-entrypoint.…" 31 minutes ago Up 2 minutes 2375-2376/tcp gitlab-dind-1
63b93c628360 gitlab/gitlab-runner:alpine "/usr/bin/dumb-init …" 31 minutes ago Up 2 minutes gitlab-gitlab-runner-1
241948f044fc gitlab/gitlab-ce:latest "/assets/wrapper" 31 minutes ago Up 2 minutes (health: starting) 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp, 0.0.0.0:8822->22/tcp, [::]:8822->22/tcp gitlab-gitlab-1
У вас написано
Для выполнения команд войдите в контейнер register-runner:
Но у меня нет контейнера register-runner
при выполнении docker compose up --build
получаю такие логи
register-runner-1 | Runtime platform arch=amd64 os=linux pid=7 revision=374d34fd version=17.6.0
register-runner-1 | Running in system-mode.
register-runner-1 |
register-runner-1 | WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://docs.gitlab.com/ee/ci/runners/new_creation_workflow
register-runner-1 | ERROR: Registering runner... failed runner=GR1348941o1QkfGY3 status=couldn't execute POST against http://gitlab/api/v4/runners: Post "http://gitlab/api/v4/runners": dial tcp 172.19.0.2:80: connect: connection refused
register-runner-1 | PANIC: Failed to register the runner.
Если позже выполняю команду - docker-compose restart register-runner
то регистрация успешно проходит ранера, но ничего не работает в пайплайне stuck написано
register-runner-1 | Registering runner... succeeded runner=Zmxrx-NV
gitlab-1 | 172.19.0.5 - - [17/Dec/2024:09:42:41 +0000] "POST /api/v4/runners HTTP/1.1" 201 67 "" "gitlab-runner 17.6.0 (17-6-stable; go1.22.7; linux/amd64)" -
register-runner-1 | Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Пока не знаю куда копать
Возможно дело в том что я задал тэг ранеру shell-linux? попробую поменять на test
docker --version
Docker version 27.4.0, build bde2b89
При запуске раннера валится с ошибкой:
Running with gitlab-runner 17.10.0 (67b2b2db)
on Common t1_JsbSV, system ID: r_Z[2](http://*****/-/jobs/4#L2)q6neIE6mOj
Preparing the "docker" executor
00:12
Using Docker executor with image docker:20-dind ...
Using helper image: registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_6[4](http://*****/-/jobs/4#L4)-v17.10.0
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-v17.10.0 ...
WARNING: Failed to pull image with policy "always": failed to register layer: ApplyLayer exit status 1 stdout: stderr: lchown /usr: no such file or directory (manager.go:2[5](http://*****/-/jobs/4#L5)4:11s)
ERROR: Job failed: failed to pull image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x8[6](http://*****/-/jobs/4#L6)_64-v17.10.0" with specified policies [always]: failed to register layer: ApplyLayer exit status 1 stdout: stderr: lchown /usr: no such file or directory (manager.go:254:11s)
При запуске раннера валится с ошибкой:
Running with gitlab-runner 17.10.0 (67b2b2db) on Common t1_JsbSV, system ID: r_Z[2](http://*****/-/jobs/4#L2)q6neIE6mOj Preparing the "docker" executor 00:12 Using Docker executor with image docker:20-dind ... Using helper image: registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_6[4](http://*****/-/jobs/4#L4)-v17.10.0 Pulling docker image registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-v17.10.0 ... WARNING: Failed to pull image with policy "always": failed to register layer: ApplyLayer exit status 1 stdout: stderr: lchown /usr: no such file or directory (manager.go:2[5](http://*****/-/jobs/4#L5)4:11s) ERROR: Job failed: failed to pull image "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x8[6](http://*****/-/jobs/4#L6)_64-v17.10.0" with specified policies [always]: failed to register layer: ApplyLayer exit status 1 stdout: stderr: lchown /usr: no such file or directory (manager.go:254:11s)
Та же ошибка. Раннер поломан безнадежно.
Была та же проблема с раннером. Помогло что-то из этого:
- После этого не заработало:
Изменил в docker-compose.yml
- CI_SERVER_URL=http://gitlab
на - GITLAB_URL=http://"ip моего сервера":8000/
и выполнил
docker compose up --force-recreate -d
- После этого заработало:
docker compose stop register-runner docker compose up -d register-runner
Заголовок:
Настройка собственного GitLab CI/CD сервера с помощью Docker Compose
Введение:
В этой статье мы рассмотрим, как развернуть собственный GitLab сервер и GitLab Runners с использованием Docker Compose. Это руководство поможет вам создать локальную среду для изучения и практики GitLab CI/CD. Мы пройдем через все этапы: от настройки контейнеров до регистрации раннеров и создания примера CI/CD пайплайна. Независимо от того, новичок вы в CI/CD или опытный разработчик, этот гайд предоставит вам ценные знания для улучшения вашего процесса разработки.
Основная часть статьи:
Зачем нужен собственный GitLab сервер?
Собственный GitLab сервер позволяет:
Как запустить свой сервер GitLab в контейнере?
1. Подготовка файловой структуры:
2. Запуск Docker Compose:
Ссылка на docker-compose.yml
3. Доступ к веб-интерфейсу GitLab:
http://localhost:8000/
root
CHANGEME123
4. Настройка SSH-ключа:
http://localhost:8000/-/user_settings/ssh_keys
~/.ssh/id_rsa.pub
Регистрация GitLab Runner для выполнения задач в Docker
.env
:register-runner
:Управление GitLab Runner
Для выполнения команд войдите в контейнер
register-runner
:Пример настройки проекта с GitLab CI/CD
test
git clone ssh://git@localhost:8822/root/test.git
main.py
:.gitlab-ci.yml
:git checkout -b test_ci
git add -A && git commit -m "feat: #12345 Добавлен CI/CD пайплайн"
git push -u origin test_ci
Этот гайд поможет вам настроить локальную среду GitLab CI/CD для изучения и экспериментов. Помните, что для продакшен-среды потребуются дополнительные настройки безопасности и производительности.