Подключение к CI
GitLab
Готовый фрагмент с вашими значениями и образом текущего выпуска — на странице проекта «Подключение» в панели. Ниже — что в нём и зачем, на случай, если вы собираете пайплайн сами.
Фрагмент .gitlab-ci.yml
code-inspect:
image:
# Образ со страницы «Подключение»: закрепление по digest — тег можно переставить, digest нет.
name: <реестр>/runner:<версия>@sha256:<digest>
entrypoint: [""]
rules:
# Только MR из этого же проекта: пайплайн MR из форка получил бы ваши секреты.
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == $CI_MERGE_REQUEST_PROJECT_PATH
# Job'ы одного MR идут по очереди: второй увидит итог первого, а не опубликует свой.
resource_group: code-inspect-$CI_MERGE_REQUEST_IID
allow_failure: true
variables:
CINS_BASE_URL: "https://codeinspect.ru"
GIT_PROVIDER: "gitlab"
GIT_BASE_URL: "https://gitlab.com" # или адрес своей инсталляции
GIT_PROJECT_ID: "<группа>/<репозиторий>" # как введено в панели
LLM_API_BASE_URL: "<адрес API модели>"
LLM_MODEL_NAME: "<модель>"
script:
- REPO_PATH="$PWD" codeinspect review
На что обратить внимание
REPO_PATH="$PWD"обязателен. Runner читает готовую рабочую копию job'а только на чтение и сам checkout не делает. Без переменной — ошибка конфигурации, по умолчанию с кодом 0 и без комментариев в MR.allow_failure: true— подстраховка: Runner по умолчанию и так не роняет пайплайн (коды возврата).- Номер MR GitLab передаёт сам (
CI_MERGE_REQUEST_IID), аргумент--mrне нужен. - Несекретные значения — в блоке
variables:job'а: без них Runner не знает ни панель, ни проект, и job завершится ошибкой конфигурации без комментариев в MR. Что означает каждое — в статье «Переменные окружения». - Секреты — Settings → CI/CD → Variables: тип Variable, флаг Masked. Protected не ставьте — иначе переменные не дойдут до пайплайнов веток MR. Список — в статье «Бот и секреты».
Свойства платформы, о которых стоит знать
- Файл с атрибутом
-diffв.gitattributesgit показывает как двоичный, и его правка может не попасть в дифф для ревью. Правки.gitattributesв MR проверяйте сами. - Готовая замена кода (suggestion) применяется в один клик. Модель читает код автора MR, и инъекция в нём может подсказать ей вредную «правку» — читайте замену так же внимательно, как код коллеги.