• Русский
  • Быстрый старт

    Целевая аудитория

    Это руководство охватывает задачи как для администраторов, так и для пользователей:

    • Администраторы: Шаги 1-2 (Развертывание компонента PAC, Настройка доступа)
    • Обычные пользователи: Шаги 2-4 (Настройка репозитория, Создание pipeline, Тестирование)

    Это руководство поможет вам быстро развернуть компонент PAC и настроить интеграцию с вашим первым Git-репозиторием.

    Введение

    В этом быстром старте рассматриваются:

    • Развертывание компонента PAC на Kubernetes
    • Настройка Git-репозитория с помощью CLI tkn pac
    • Создание вашего первого pipeline в коде

    Оценочное время чтения

    20-30 минут

    Требования

    • Kubernetes кластер (версия 1.24+)
    • Установлен Tekton Operator
    • Права администратора кластера
    • Установлен и настроен kubectl
    • Установлен CLI tkn с плагином pac
    • Git-репозиторий с правами администратора

    Шаг 1: Развертывание компонента PAC

    Для администраторов

    Этот раздел предназначен для администраторов кластера. Если PAC уже развернут в вашем кластере, перейдите к Шагу 2: Настройка репозитория.

    Создание CR OpenShiftPipelinesAsCode

    Несмотря на то, что в названии ресурса содержится "OpenShift", PAC можно развернуть на Kubernetes-платформах через Tekton Operator.

    Создайте файл с именем pac.yaml:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: OpenShiftPipelinesAsCode
    metadata:
      name: pipelines-as-code
    spec:
      settings:
        application-name: Pipelines as Code CI
        hub-url: http://tekton-hub-api.tekton-pipelines:8000/v1
        remote-tasks: "true"
        
        # (Опционально) Интеграция с пользовательской консолью
        # Раскомментируйте и настройте для интеграции с вашей консолью
        # Замените 'my-cluster' на имя вашего кластера
        # custom-console-name: "My Console"
        # custom-console-url: "https://console.example.com"
        # custom-console-url-pr-details: "https://console.example.com/console-acp/workspace/{{ namespace }}~my-cluster~{{ namespace }}/pipeline/pipelineRuns/detail/{{ pr }}"
        # custom-console-url-pr-tasklog: "https://console.example.com/console-acp/workspace/{{ namespace }}~my-cluster~{{ namespace }}/pipeline/pipelineRuns/detail/{{ pr }}?tab=task_overview&id={{ task }}"
        # custom-console-url-namespace: "https://console.example.com/console-acp/workspace/{{ namespace }}~my-cluster~{{ namespace }}/pipeline/pipelineRuns"
        
      targetNamespace: tekton-pipelines  # Пространство имён по умолчанию, можно изменить

    Примечание: Поле targetNamespace указывает, в каком пространстве имён будут развернуты компоненты PAC. По умолчанию это tekton-pipelines, но вы можете использовать любое другое имя пространства имён. Убедитесь, что пространство имён существует перед применением конфигурации.

    Интеграция с пользовательской консолью: Закомментированные настройки позволяют интегрировать PAC с вашей пользовательской панелью. При настройке ссылки на статус pipeline в Git-провайдерах будут вести на вашу консоль. Важно: замените my-cluster в URL на имя вашего кластера (если не уверены, спросите администратора кластера). Для подробного руководства по настройке, пошаговых инструкций и устранения неполадок смотрите Настройка ссылок пользовательской консоли.

    Примените конфигурацию:

    kubectl apply -f pac.yaml

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

    openshiftpipelinesascode.operator.tekton.dev/pipelines-as-code created

    Проверка развертывания

    Проверьте статус компонента PAC:

    kubectl get openshiftpipelinesascodes.operator.tekton.dev

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

    NAME                  VERSION   READY   REASON
    pipelines-as-code    0.x.x     True    Ready

    Проверьте pods PAC (замените tekton-pipelines на ваше пространство имён, если оно другое):

    kubectl get pods -n tekton-pipelines | grep pipelines-as-code

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

    NAME                                      READY   STATUS    RESTARTS   AGE
    pipelines-as-code-controller-xxxxx        1/1     Running   0          2m
    pipelines-as-code-watcher-xxxxx          1/1     Running   0          2m
    pipelines-as-code-webhook-xxxxx          1/1     Running   0          2m

    Примечание: В этом руководстве в качестве примера используется пространство имён tekton-pipelines. Если вы развернули PAC в другом пространстве имён, замените tekton-pipelines на имя вашего пространства имён.

    Вы должны увидеть три pod в состоянии Running:

    • pipelines-as-code-controller-*
    • pipelines-as-code-watcher-*
    • pipelines-as-code-webhook-*

    Настройка доступа

    Для администраторов

    Этот раздел предназначен для администраторов кластера. Обычные пользователи могут пропустить этот шаг и перейти к Шагу 2.

    Откройте доступ к контроллеру PAC, чтобы GitLab webhook мог к нему обращаться. Можно использовать Ingress или NodePort. Подробности по настройке смотрите в Управление компонентом PAC.

    Важно: URL контроллера PAC должен быть доступен с сервера GitLab. Убедитесь, что при настройке репозитория указан правильный URL.

    Получение URL контроллера PAC

    После открытия доступа к контроллеру PAC вы можете получить его URL следующими способами. Обычные пользователи могут использовать эти команды для запроса URL при необходимости:

    Запрос Ingress (если настроен)

    Проверьте, открыт ли контроллер PAC через Ingress (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):

    kubectl get ingress -n <pac-namespace> | grep pipelines-as-code

    Пример вывода (если Ingress настроен):

    NAME                  CLASS    HOSTS              ADDRESS        PORTS   AGE
    pipelines-as-code     nginx    pac.example.com    192.168.1.10   80      5m

    Если найден, получите хост Ingress:

    kubectl get ingress pipelines-as-code -n <pac-namespace> -o jsonpath='{.spec.rules[0].host}'

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

    pac.example.com

    Запрос NodePort сервиса (если настроен)

    Проверьте, открыт ли контроллер PAC через NodePort (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):

    kubectl get svc -n <pac-namespace> pipelines-as-code-controller-nodeport

    Пример вывода (если NodePort настроен):

    NAME                                      TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    pipelines-as-code-controller-nodeport    NodePort   10.96.123.45    <none>        8080:30080/TCP   5m

    Если найден, получите NodePort и IP узла:

    # Установите ваше пространство имён PAC (по умолчанию: tekton-pipelines)
    PAC_NAMESPACE="tekton-pipelines"
    
    # Получить NodePort
    NODEPORT=$(kubectl get service -n ${PAC_NAMESPACE} pipelines-as-code-controller-nodeport -o jsonpath='{.spec.ports[?(@.name=="http-listener")].nodePort}')
    
    # Получить IP узла
    NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')
    
    echo "PAC Controller URL: http://${NODE_IP}:${NODEPORT}"

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

    PAC Controller URL: http://192.168.1.100:30080

    Если не удаётся найти URL

    Если ни один из методов не сработал или у вас нет прав для запроса ресурсов кластера, обратитесь к вашему администратору PAC для получения URL контроллера PAC.

    Шаг 2: Настройка репозитория

    Для обычных пользователей

    Этот раздел предназначен для обычных пользователей для настройки их Git-репозиториев. Если вам нужен URL контроллера PAC, смотрите инструкции по запросу в Шаге 1 выше или обратитесь к администратору PAC.

    Понимание пространств имён

    В этом руководстве используются два разных пространства имён:

    • Пространство имён PAC: пространство, где развернуты компоненты PAC (controller, watcher, webhook). По умолчанию tekton-pipelines, но может быть изменено через targetNamespace в CR OpenShiftPipelinesAsCode.
    • Пространство имён pipeline: пространство, где создаются PipelineRun. Указывается при создании CR Repository и может быть любым пространством имён в вашем кластере.

    Параметр --pac-namespace в команде tkn pac create repo указывает пространство имён PAC (где развернут PAC), а не пространство имён pipeline (где будут запускаться pipeline).

    Если PAC уже развернут

    Если PAC уже развернут в вашем кластере, вы можете пропустить Шаг 1 и начать с этого шага. Для проверки работы PAC выполните:

    kubectl get pods -n tekton-pipelines | grep pipelines-as-code

    Вы должны увидеть три pod в состоянии Running. Если нет, обратитесь к администратору PAC или смотрите Управление компонентом PAC.

    Установка плагина tkn pac

    Убедитесь, что у вас установлен плагин tkn pac:

    tkn pac version

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

    0.39.2

    Если команда не работает или выдает ошибку, смотрите инструкции по установке в Справочнике команд tkn pac.

    Создание персонального токена доступа GitLab

    1. Перейдите в GitLab → Настройки → Access Tokens
    2. Создайте токен с областью доступа api
    3. Сохраните токен в надежном месте

    Настройка репозитория с помощью tkn pac

    Важно: Перед выполнением команды перейдите в директорию вашего Git-репозитория. В текущей директории будет создана папка .tekton.

    cd /path/to/your/gitlab/repo
    tkn pac create repo --pac-namespace tekton-pipelines

    Примечание: Замените tekton-pipelines на ваше фактическое пространство имён PAC, если вы развернули PAC в другом пространстве имён. Параметр --pac-namespace указывает, где развернут контроллер PAC.

    Следуйте интерактивным подсказкам:

    1. Введите URL Git-репозитория (автоматически определяется из текущей директории или введите вручную)
    2. Введите пространство имён для pipeline (по умолчанию: default, введите project-pipelines или предпочитаемое пространство имён)
      • Примечание: Пространство имён должно существовать. Создайте его заранее: kubectl create namespace project-pipelines
    3. В этот момент будет создан CR Repository
    4. Введите ID проекта GitLab (находится в настройках проекта → Общие)
    5. Введите URL контроллера PAC (автоматически определяется или введите вручную, если определение не удалось)
    6. Введите секрет webhook (или нажмите Enter для использования автоматически сгенерированного)
    7. Введите токен доступа GitLab (созданный персональный токен доступа)
    8. Введите URL API GitLab (по умолчанию: https://gitlab.com, или введите URL вашего self-hosted GitLab)

    Команда выполнит:

    • Создание CR Repository в кластере
    • Автоматическую настройку webhook в GitLab
    • Создание Kubernetes Secret с учётными данными
    • Генерацию шаблона .tekton/pipelinerun.yaml в вашем репозитории

    Шаг 3: Создание вашего первого pipeline

    Команда tkn pac create repo создаёт базовый шаблон в .tekton/pipelinerun.yaml. Отредактируйте его для определения вашего pipeline:

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: simple-pipeline
      annotations:
        pipelinesascode.tekton.dev/on-target-branch: "[refs/heads/main]"
        pipelinesascode.tekton.dev/on-event: "[push]"
    spec:
      pipelineSpec:
        tasks:
        - name: hello
          taskSpec:
            steps:
            - name: echo
              image: alpine:latest
              script: |
                echo "Hello from Pipelines as Code!"

    Закоммитьте и отправьте изменения в репозиторий:

    git add .tekton/pipelinerun.yaml
    git commit -m "Add PAC pipeline"
    git push origin <your-branch-name>

    Примечания:

    • Замените <your-branch-name> на имя вашей ветки (например, main, master или develop)
    • Убедитесь, что аннотация pipelinesascode.tekton.dev/on-target-branch соответствует имени вашей ветки. Например, если ветка main, используйте "[refs/heads/main]"; если test, используйте "[refs/heads/test]"
    • Для соответствия нескольким веткам используйте значения через запятую: "[main, develop]" или "[refs/heads/main,refs/heads/develop]"
    • Для соответствия всем веткам используйте: "[refs/heads/*]"

    Шаг 4: Тестирование pipeline

    Запуск через push

    Отправьте коммит в ветку, указанную в аннотации pipeline, чтобы запустить pipeline:

    echo "test" >> README.md
    git add README.md
    git commit -m "Test pipeline trigger"
    git push origin <your-branch-name>

    Запуск через Merge Request

    Создайте Merge Request для запуска pipeline:

    git checkout -b feature/test
    echo "feature" >> feature.txt
    git add feature.txt
    git commit -m "Add feature"
    git push origin feature/test

    Затем создайте Merge Request в GitLab.

    Проверка статуса pipeline

    Просмотрите PipelineRun в пространстве имён:

    kubectl get pipelineruns -n project-pipelines

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

    NAME                    STARTED        DURATION   STATUS
    simple-pipeline-xxxxx   2 minutes ago  30s        Succeeded

    Просмотр логов pipeline:

    # Список всех PipelineRun
    tkn pipelinerun list -n project-pipelines

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

    NAME                    STARTED        DURATION   STATUS
    simple-pipeline-xxxxx   2 minutes ago  30s        Succeeded
    # Просмотр логов конкретного PipelineRun
    tkn pipelinerun logs <pipelinerun-name> -n project-pipelines

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

    [hello : echo] Hello from Pipelines as Code!

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