Автор оригинала: Konstantinos Demiris.
Gitlab используется инди-хакерами, но и крупными компаниями с сотнями Devs. Одиночный разработчик DEV на ее проекте может продвигать изменения каждые, а затем, но когда это умножается в десять раз, быстро становится подавляющим для сервера сборки.
В некоторых средах есть слишком много DEV, работающих над многими проектами, находящими изменениями каждую секунду дня! Вы кажетесь знакомы с тем, что я описываю. Надоело в ожидании тех, кто создает работу, чтобы закончить, верно? Решение простое, увеличивайте параллелизм …:]
Примечание: В этом посте мы учитываем несколько проектов, которые обслуживаются один бегун с Докер
как исполнитель. Этот бегун запускает работу по сборке, основываясь на параллелизме, которые мы установим. Различные настройки для различных тематических исследований естественным образом возможны.
Ради полноты, мы построим все это с нуля.
Для этого руководства мы будем использовать:
Gitlab Enterprise Edition 10.8.4-EE
GitLab-Runner 10.6.0
Просто сторона примечания … : Я люблю автоматизацию Так что я пишу книгу об этом! Он упакован с всеобъемлющими гидами по концепциям CI/CD , реализован с техниками, как Кубернаны , Хелм , Докер , Gitlab , Проект , Леса и т.п. Вы хотите быть уведомленным, как только он будет доступен? Получить уведомление! Вы знаете друг/коллега, который будет заинтересован? Поделиться этим!
Шаг 1: Создайте контейнер GitLab-Runner
Примечание: вам может понадобиться корень
docker run --name runner --restart always -d -v $HOME/gitlab-runner:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:v10.6.0
Внимание: это не зарегистрированный бегун. Это только двоичный бегун Gitlab-Runner работает внутри контейнера Docker!
Шаг 2: Зарегистрируйте бегун в Gitlab CI
gitlab-runner register --non-interactive --description "docker-runner" --url "http://www.your-gitlab.com/" -registration-token "something_weird" --executor "docker" --docker-image "docker:latest" --run-untagged --locked=false --docker-privileged=true --docker-volumes /var/run/docker.sock:/var/run/docker.sock
Примечание: --locked = false
аргумент не работает. Бегун все еще будет зарегистрирован как специфический
. Я включаю в себя в случае, если будущее обновление исправляет его.
Необязательно, вы можете зарегистрировать более одного бегунов с тем же [или другим] именем], если вы хотите заблокировать их на проект.
Шаг 3: Увеличьте параллелизм в Config.toml
одновременно
Установка, контролирует, сколько работы можно запускать одновременно. Глобально Отказ Это означает, что это относится ко всем бегунам независимо от исполнителя [Docker, SSH, Kubernetes etc]
Вы должны открыть /etc/gitlab-runner/Config.toml
Файл с редактором, как нано
или погиб
.
И изменить одновременно
к чему-то вроде одновременно
[или столько одновременных созданий, которые вам нравятся]
Проверьте здесь для получения дополнительной информации.
Шаг 4: Перезапустите GitLab-Runner
Просто быть в безопасности и не заканчивать голову …
gitlab-runner restart
Шаг 5: запустите некоторые сборки
Теперь вы можете запустить столько рабочих мест, которые вы устанавливаете параллелизм, чтобы быть [I.E N ]! Попробуйте сокрушить это с n + 1 Просто чтобы посмотреть +1 работу, чтобы терпеливо ждать, чтобы слот открылся.
Примечание: когда Докер
Используется исполнитель, каждая новая работа по сборке будет работать внутри нового контейнера докера, который будет автоматически. Та же логика применяется с Кубернаны
Исполнитель тоже.
Дополнительный шаг: Убирать
Там будет много (в зависимости от ваших проектов) контейнеров кэша, которые остаются выходом, когда работа по сборке добится успеха.
Проверьте это ниже!
2ca3a04e44dd 88a04ddd0898 "gitlab-runner-cache " 10 minutes ago Exited (0) 10 minutes ago runner-707174de-project-38-concurrent-0-cache-3c3f0... 8beb199e0e1f 88a04ddd0898 "gitlab-runner-cache " 10 minutes ago Exited (0) 10 minutes ago runner-707174de-project-38-concurrent-0-cache-d6b5f... a7f0bf9ba8b1 88a04ddd0898 "gitlab-runner-cache " 10 minutes ago Exited (0) 10 minutes ago runner-f2bd384a-project-46-concurrent-0-cache-3c3f0... 66bb3ef98879 88a04ddd0898 "gitlab-runner-cache " 10 minutes ago Exited (0) 10 minutes ago runner-f2bd384a-project-46-concurrent-0-cache-d6b5f... 3689d386af1b 88a04ddd0898 "gitlab-runner-cache " 18 minutes ago Exited (0) 18 minutes ago runner-8df2f9cc-project-19-concurrent-0-cache-3c3f0... 1391db607410 88a04ddd0898 "gitlab-runner-cache " 18 minutes ago Exited (0) 18 minutes ago runner-8df2f9cc-project-19-concurrent-0-cache-d6b5f...
Эти контейнеры должны оставаться после сборки, чтобы следующая сборка можно использовать кэш. Удаление его после того, как сборка будет победить свою цель. Однако, если вы заметите, что у вас возникает пространство и странное поведение происходит … Или у вас есть просто крошечный OCD, запустите это:
docker run -d -e LOW_FREE_SPACE=10G -e EXPECTED_FREE_SPACE=20G -e LOW_FREE_FILES_COUNT=1048576 -e EXPECTED_FREE_FILES_COUNT=2097152 -e DEFAULT_TTL=10m -e USE_DF=1 --restart always -v /var/run/docker.sock:/var/run/docker.sock --name=gitlab-runner-docker-cleanup quay.io/gitlab/gitlab-runner-docker-cleanup
Примечание: для получения дополнительной информации check здесь
Оригинал: «https://www.codementor.io/@konstantinosdemiris/this-is-how-to-achieve-multiple-job-concurrency-with-gitlab-lcei4nw74»