Свой раннер CI
Как подключить к репозиторию команды свой раннер, чтобы CI сам выкатывал работу на ваш сервер.
Тесты и сборка идут на общих раннерах хостинга: GitHub Actions или раннерах GitLab. А чтобы CI сам выкатывал работу на ваш сервер — стенд, VDS или ноутбук, — на этом сервере нужен свой раннер: он берёт задачи из репозитория и выполняет их у вас.
Зарегистрировать раннер в репозитории может только администратор (на GitHub) или Maintainer (на GitLab). Команде таких прав не дают: с ними можно снять защиту ветки main. Поэтому токен регистрации выдаёт платформа, а раннер вы ставите сами.
Где взять команду
В меню «Репозиторий» — «Свой раннер CI» → «Получить команду». Там же доступ к репозиторию и адрес стенда. Кнопка появляется, если организатор включил свой раннер для вашего потока, вы приняли приглашение в репозиторий и курс живёт на GitHub или GitLab: на GitVerse и SourceCraft свой раннер через платформу пока не подключить.
GitHub. Платформа покажет команды для Linux x64: скачать раннер, зарегистрировать его с меткой stand и запустить службой. Токен живёт час — регистрируйте сразу. Для другой системы возьмите архив со страницы выпусков раннера, остальное то же.
GitLab. Сначала поставьте gitlab-runner из пакетов, затем выполните команду gitlab-runner register, которую покажет платформа.
Токен GitLab показывается один раз
Каждая выдача заводит в проекте новый раннер. Те, что так и не вышли на связь, платформа убирает сама при следующей выдаче — лишние кнопки мусора не оставят.
Как отправить задачу на свой раннер
Раннер зарегистрирован с меткой stand. Задача с этой меткой пойдёт только на него, остальные — на общие раннеры.
GitHub Actions:
deploy:
runs-on: [self-hosted, stand]
steps:
- uses: actions/checkout@v4
- run: docker compose up -d --buildGitLab CI:
deploy:
tags: [stand]
script:
- docker compose up -d --buildНа GitLab раннер берёт и задачи без меток: у GitLab вуза общих раннеров может не быть, и тогда всё пойдёт на ваш.
Раннер GitLab работает от пользователя gitlab-runner. Если деплой через Docker, дайте ему доступ: sudo usermod -aG docker gitlab-runner.
Если сервер выключен
Пока раннер не на связи, задачи для него ждут. GitHub снимает задачу, если её никто не взял за сутки; GitLab держит её в ожидании. Включили сервер — раннер заберёт то, что успело дождаться.
Уведомления
О чём платформа сообщает, где их смотреть, как подключить ВКонтакте и выключить лишнее по каждому курсу.
Вход и аккаунты
Какими способами входить на платформу, зачем привязывать GitHub, как связать входы в один профиль, как убрать лишние курсы из меню и что делать, если прошлые работы не видны.