• Русский
  • Настройка GitLab Repository

    В этом руководстве описано подключение репозитория GitLab к PAC: подготовка учетных данных, создание ресурса Repository, регистрация webhook и запуск PipelineRun.

    GitLab использует режим Webhook. Для каждого репозитория настраиваются токен доступа GitLab и project webhook.

    На этой странице используются манифесты и веб-интерфейс GitLab. Для сценария с CLI см. Справочник по командам tkn pac.

    Предварительные требования

    • Компонент PAC развернут и доступен GitLab; см. Управление компонентом PAC.
    • URL webhook PAC; см. Получение URL webhook PAC.
    • Доступ Maintainer к проекту GitLab (требуется для добавления webhook).
    • Целевое пространство имен Kubernetes, в котором будут размещаться ресурс Repository и его PipelineRun.
    • Доступ kubectl к этому пространству имен.

    Шаг 1. Создание токена доступа GitLab

    PAC нужен токен для чтения метаданных проекта, публикации комментариев в merge request и обновления статуса commit. Подходит как Personal Access Token, так и Project Access Token.

    1. В GitLab откройте проект или Settings → Access Tokens в настройках пользователя.
    2. Создайте токен со следующими параметрами:
      • Name: описательное имя, например pac-integration.
      • Scopes: api.
    3. Скопируйте токен. GitLab показывает его только один раз.

    Шаг 2. Создание Secret Kubernetes

    Создайте один Secret, содержащий токен GitLab и секрет webhook. Следуйте инструкции Создание Git Secret для PAC.

    В дальнейшем в этом руководстве Secret называется gitlab-webhook-config.

    Шаг 3. Создание ресурса Repository

    Ресурс Repository ссылается на Secret. Для GitLab.com:

    apiVersion: pipelinesascode.tekton.dev/v1alpha1
    kind: Repository
    metadata:
      name: my-repo
      namespace: project-pipelines
    spec:
      url: https://gitlab.com/<group>/<project>
      git_provider:
        type: gitlab
        secret:
          name: gitlab-webhook-config
        webhook_secret:
          name: gitlab-webhook-config

    Для self-hosted GitLab задайте spec.url в соответствии с URL проекта и добавьте git_provider.url со значением базового URL экземпляра GitLab:

    spec:
      url: https://gitlab.example.com/<group>/<project>
      git_provider:
        type: gitlab
        url: https://gitlab.example.com
        secret:
          name: gitlab-webhook-config
        webhook_secret:
          name: gitlab-webhook-config
    INFO

    Для self-hosted GitLab git_provider.url должен содержать базовый URL экземпляра GitLab, а не URL проекта.

    Примените манифест:

    kubectl apply -f repository.yaml

    Проверьте результат:

    kubectl get repositories -n project-pipelines

    Пример вывода:

    NAME      URL                                       SUCCEEDED   REASON   STARTTIME   COMPLETIONTIME
    my-repo   https://gitlab.com/group/project

    Шаг 4. Регистрация webhook в GitLab

    1. Откройте проект GitLab, затем выберите Settings → Webhooks.
    2. Нажмите Add new webhook.
    3. Заполните форму:
      • URL: URL webhook PAC из предварительных требований.
      • Secret token: то же значение webhook.secret, которое хранится в Secret Kubernetes.
      • SSL verification: включено (рекомендуется; отключайте только в непроизводственных средах с самоподписанными сертификатами).
    4. В разделе Trigger выберите:
      • Push eventsAll branches, если не требуется ограничение)
      • Tag push events
      • Comments
      • Merge request events
    5. Нажмите Add webhook.

    GitLab предоставляет действие Test → Push events для записи webhook. Ответ 200 подтверждает, что контроллер получил и принял событие.

    Шаг 5. Добавление PipelineRun и его запуск

    Добавьте манифест PipelineRun в каталог .tekton/ в репозитории и отправьте изменения. PAC считывает файл из ветки, для которой было сгенерировано событие, сопоставляет аннотации с событием и создает PipelineRun в пространстве имен.

    См. Определение PipelineRun в Git для ознакомления со структурой файла и грамматикой аннотаций, а также Запуск Pipeline для операций Git, на которые реагирует PAC.

    Проверка

    После поступления Git-события PAC создает PipelineRun в пространстве имен Repository. Подтвердите это:

    kubectl get pipelineruns -n project-pipelines \
      -l pipelinesascode.tekton.dev/repository=my-repo

    В журналах контроллера PAC видно, что событие обрабатывается:

    kubectl logs -n <pac-namespace> -l app=pipelines-as-code-controller --tail=100

    GitLab отображает статус commit, установленный PAC, на соответствующей странице pipeline / merge request.

    Устранение неполадок

    СимптомЧто проверить в первую очередь
    Тест webhook возвращает Hook executed successfully, но PipelineRun не появляетсяУбедитесь, что манифест PipelineRun существует в .tekton/ и его аннотации соответствуют событию. См. Определение PipelineRun в Git.
    Тест webhook завершается с connection refusedПроверьте, что URL webhook PAC доступен из GitLab. См. Получение URL webhook PAC.
    Тест webhook завершается с 401 или 403Убедитесь, что значение webhook.secret, настроенное в GitLab, совпадает со значением в Secret Kubernetes.
    Статус repositories показывает failedВыполните kubectl describe repository <name> -n <ns>; распространенные причины — недоступный git_provider.url или просроченный токен.
    События self-hosted GitLab не поступаютЗначение git_provider.url должно быть задано как базовый URL GitLab, а не URL проекта.
    Статусы проверки не отправляются обратно в GitLabТокен имеет область api и не просрочен.

    Полную матрицу устранения неполадок см. в разделе Распространенные проблемы.

    Следующие шаги