• Русский
  • Справочник по команде tkn pac

    tkn pac — это официальный CLI-плагин для Pipelines-as-Code. Он автоматизирует разовые настройки, которые иначе выполняются вручную с помощью kubectl apply и веб-интерфейса Git-провайдера: создание ресурса Repository, регистрация webhook и генерация стартового файла .tekton/pipelinerun.yaml.

    Эта страница представляет собой справочник по командам для пользователей, которые предпочитают рабочий процесс через CLI. Рекомендуемую сквозную процедуру с использованием обычных манифестов см. в разделах Настройка репозитория GitHub и Настройка репозитория GitLab.

    Требования

    • Установлен tkn CLI
    • Установлен плагин tkn pac
    • kubectl настроен для доступа к вашему кластеру
    • Развернут компонент PAC

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

    Скачайте tkn из Tekton CLI Releases, затем установите плагин pac из tkn pac Releases.

    Установите tkn pac, используя один из способов, описанных в официальном руководстве по релизам проекта tkn pac, и убедитесь, что исполняемый файл доступен в вашем PATH.

    Проверка установки

    # Проверка CLI tkn
    tkn version

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

    Client version: 0.43.0
    Pipeline version: v0.65.0
    # Проверка плагина tkn-pac
    tkn pac version

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

    0.39.2

    Команды для репозитория

    tkn pac create repository

    Создает новый репозиторий Pipelines as Code и namespace на основе шаблона PipelineRun.

    Базовый синтаксис:

    tkn pac create repo

    Интерактивный режим:

    Команда запросит у вас:

    1. URL репозитория Git (автоматически определяется из текущего каталога)
    2. Namespace для pipelines (по умолчанию: project-pipelines)
    3. Специфичную для Git-провайдера информацию (например, ID проекта для GitLab)
    4. URL контроллера PAC (автоматически определяется)
    5. Секрет webhook (генерируется автоматически)
    6. Токен доступа к Git-провайдеру
    7. URL API Git-провайдера (зависит от провайдера)

    Что делает команда:

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

    Пример:

    cd /path/to/your/repo
    tkn pac create repo

    Пример вывода (интерактивные запросы):

    ? Enter the Git repository URL: https://gitlab.com/user/repo
    ? Enter the namespace where the pipeline should run (default: default): project-pipelines
    ? Enter the GitLab project ID: 12345678
    ? Enter the Pipelines as Code controller URL (default: http://pac.example.com): 
    ? Enter the webhook secret (default: auto-generated): 
    ? Enter the GitLab access token: glpat-xxxxxxxxxxxxxxxxxxxx
    ? Enter the GitLab API URL (default: https://gitlab.com): 
    ✓ Repository CR created successfully
    ✓ Webhook configured in GitLab
    ✓ Secret created
    ✓ Template generated at .tekton/pipelinerun.yaml

    Для сквозных процедур, специфичных для провайдера, см. Руководства.

    tkn pac list

    Выводит список всех репозиториев Pipelines as Code и отображает последний статус связанных запусков.

    Базовый синтаксис:

    tkn pac list

    Список в определенном namespace:

    tkn pac list -n <namespace>

    Формат вывода:

    REPOSITORY          NAMESPACE          URL                                    LAST RUN STATUS
    my-repo            project-pipelines  https://gitlab.com/user/repo       Succeeded
    another-repo       production         https://gitlab.com/user/another    Running

    Параметры:

    • -n, --namespace <namespace>: Указывает namespace, в котором нужно вывести список репозиториев (по умолчанию: namespace текущего контекста kubectl)
    • -A, --all-namespaces: Выводит список репозиториев во всех namespace
    • -o, --output <format>: Формат вывода (default, json, yaml, wide)

    Пример:

    # List all repositories in current namespace
    tkn pac list
    
    # List repositories in specific namespace
    tkn pac list -n project-pipelines
    
    # List repositories in all namespaces
    tkn pac list -A

    tkn pac repo describe

    Выводит описание репозитория Pipelines as Code и связанных запусков.

    Базовый синтаксис:

    tkn pac repo describe <repository-name>

    Параметры:

    • -n, --namespace <namespace>: Указывает namespace, в котором расположен репозиторий (по умолчанию: namespace текущего контекста kubectl)
    • -o, --output <format>: Формат вывода (default, json, yaml)

    Включает в вывод:

    • Сведения о CR Repository
    • Конфигурацию Git-провайдера
    • Конфигурацию webhook
    • Статус последних PipelineRun
    • Информацию о последнем запуске

    Пример:

    # Describe repository in current namespace
    tkn pac repo describe my-repo
    
    # Describe repository in specific namespace
    tkn pac repo describe my-repo -n project-pipelines

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

    Repository: my-repo
    Namespace: project-pipelines
    URL: https://gitlab.com/user/repo
    Git Provider: gitlab
    Status: Ready
    
    Recent Runs:
      - pipelinerun-abc123: Succeeded (2 minutes ago)
      - pipelinerun-def456: Running (5 minutes ago)
      - pipelinerun-ghi789: Failed (10 minutes ago)

    Команда generate

    tkn pac generate

    Генерирует простой шаблон PipelineRun.

    Базовый синтаксис:

    tkn pac generate

    Возможности:

    • Автоматически определяет текущую информацию Git из каталога
    • Использует базовую функцию определения языка
    • Добавляет дополнительные задачи в зависимости от определенного языка
    • Создает шаблон .tekton/pipelinerun.yaml

    Определение языка:

    Команда определяет язык проекта и добавляет соответствующие задачи:

    • Python: определяет setup.py или requirements.txt, добавляет задачу pylint
    • Go: определяет go.mod, добавляет задачу golangci-lint
    • Node.js: определяет package.json, добавляет задачи npm
    • Java: определяет pom.xml, добавляет задачи maven

    Пример:

    # Navigate to your repository
    cd /path/to/your/repo
    
    # Generate pipeline template
    tkn pac generate

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

    ✓ Pipeline template generated at .tekton/pipelinerun.yaml

    Пример сгенерированного шаблона:

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: generated-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 generated pipeline!"

    Команда resolve

    tkn pac resolve

    Выполняет запуск pipeline так, как если бы он принадлежал сервису Pipelines as Code. Это полезно для локального тестирования определений pipeline без создания нового коммита.

    Что означает "Resolve"?

    Команда resolve обрабатывает определение PipelineRun и:

    • Заменяет переменные PAC (например, {{repo_url}}, {{revision}}) фактическими значениями
    • Разрешает аннотации задач (при необходимости получает задачи из Tekton Hub)
    • Проверяет структуру pipeline
    • Показывает, как будет выглядеть итоговый PipelineRun

    Важно: Эта команда не создает PipelineRun в вашем кластере. Она только обрабатывает и проверяет определение pipeline локально.

    Базовый синтаксис:

    tkn pac resolve -f <pipeline-file>

    Параметры:

    • -f, --file: Путь к файлу или каталогу pipeline (обязательно)
    • -p, --param: Переопределяет значения параметров (формат: key=value)
    • -o, --output: Формат вывода (yaml, json или default)

    Resolve из файла:

    tkn pac resolve -f .tekton/pull-request.yaml

    Resolve из каталога:

    tkn pac resolve -f .tekton/

    Команда обрабатывает все файлы .yaml и .yml в каталоге.

    Переопределение параметров:

    Можно переопределить значения параметров по умолчанию, полученные из репозитория Git:

    tkn pac resolve -f .tekton/pipelinerun.yaml \
      -p revision=main \
      -p repo_name=my-repo

    Несколько файлов:

    Можно использовать флаг -f несколько раз:

    tkn pac resolve -f .tekton/pipeline1.yaml -f .tekton/pipeline2.yaml

    Автоопределение:

    При запуске из репозитория исходного кода команда пытается:

    • Определить текущую информацию Git
    • Автоматически разрешить такие параметры, как:
      • Текущая ревизия (commit SHA)
      • Имя ветки
      • URL репозитория
      • Имя репозитория

    Пример:

    # Resolve pipeline from current directory
    cd /path/to/your/repo
    tkn pac resolve -f .tekton/pipelinerun.yaml

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

    Resolved pipeline:
    - revision: abc1234
    - repo_url: https://gitlab.com/user/repo
    - branch: main
    ✓ Pipeline resolved successfully

    Формат вывода:

    Команда выводит разрешенный YAML PipelineRun в stdout. Вы можете:

    • Сохранить его в файл: tkn pac resolve -f .tekton/pipelinerun.yaml > resolved.yaml

    • Просмотреть его напрямую: tkn pac resolve -f .tekton/pipelinerun.yaml

    • Использовать для проверки: убедиться, что переменные корректно разрешаются перед коммитом

      # Resolve with custom parameters
      tkn pac resolve -f .tekton/pipelinerun.yaml \
        -p revision=feature-branch \
        -p repo_name=custom-repo

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

    Resolved pipeline:
    - revision: feature-branch
    - repo_url: https://gitlab.com/user/custom-repo
    - branch: feature-branch
    ✓ Pipeline resolved successfully

    Сценарии использования:

    • Тестировать определения pipeline локально
    • Отлаживать проблемы pipeline без создания коммитов
    • Проверять синтаксис pipeline перед коммитом
    • Тестировать разрешение параметров

    Глобальные параметры

    Все команды tkn pac поддерживают следующие глобальные параметры:

    • -h, --help: Показать справку по команде
    • -v, --version: Показать информацию о версии
    • --kubeconfig: Путь к файлу kubeconfig
    • --context: Используемый контекст Kubernetes

    Рекомендации

    1. Управление репозиториями

    • Используйте описательные имена: выбирайте понятные имена репозиториев
    • Организуйте по namespace: группируйте связанные репозитории по namespace
    • Регулярный мониторинг: используйте tkn pac list для отслеживания состояния репозиториев

    2. Генерация pipeline

    • Проверяйте сгенерированные шаблоны: всегда просматривайте и настраивайте сгенерированные pipeline
    • Тестируйте локально: используйте tkn pac resolve для проверки pipeline перед коммитом
    • Контроль версий: фиксируйте определения pipeline в Git

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

    Команда не найдена

    Если команда tkn pac не найдена:

    1. Проверьте установку:

      tkn pac version

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

      0.39.2
    2. Проверьте PATH: убедитесь, что tkn-pac находится в вашем PATH

    3. Переустановите: при необходимости переустановите плагин

    Проблемы с подключением

    Если команды не могут подключиться к кластеру:

    1. Проверьте kubectl: протестируйте подключение kubectl
    2. Проверьте контекст: убедитесь в правильности контекста Kubernetes
    3. Проверьте разрешения: убедитесь, что у вас есть необходимые права

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