Подключение к 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 в .gitattributes git показывает как двоичный, и его правка может не попасть в дифф для ревью. Правки .gitattributes в MR проверяйте сами.
  • Готовая замена кода (suggestion) применяется в один клик. Модель читает код автора MR, и инъекция в нём может подсказать ей вредную «правку» — читайте замену так же внимательно, как код коллеги.