Bitbucket Pipelines

AI-перевод с помощью Bitbucket Pipelines и Lingo.dev CI/CD

Интеграция Lingo.dev с Bitbucket Pipelines — это безопасное open-source CI/CD-решение, которое автоматически локализует новый контент и не допускает неполных переводов в продакшн. В зависимости от требований вашего рабочего процесса, интеграция создает pull request или коммитит изменения прямо в вашу ветку.

Также реализовано автоматическое разрешение конфликтов через rebase, чтобы ваши переводы всегда были синхронизированы с кодом без ручного вмешательства.

Интеграция поддерживает несколько сценариев работы:

  1. Прямые коммиты в ветки при изменении контента
  2. Pull request'ы в ветки для обновления переводов

После прохождения этого гайда вы сможете:

  1. Настроить автоматическую локализацию, запускаемую при пуше кода;
  2. Настроить безопасную аутентификацию с помощью переменных репозитория;
  3. Выбрать между прямыми коммитами и pull request-процессом;
  4. Понять, как непрерывная локализация вписывается в ваш текущий процесс.

Поехали!

Необходимые условия

Настройка репозитория

В вашем репозитории должен быть настроен Lingo.dev CLI с валидным файлом i18n.json. Если вы ещё не сделали это, сначала пройдите быстрый старт по CLI.

Шаг 1. Настройка аутентификации

Интеграции Lingo.dev с Bitbucket нужен доступ к вашему движку переводов и репозиторию. Аутентификация происходит через переменные репозитория, чтобы ваши ключи оставались в безопасности.

Добавьте ваш API-ключ

Перейдите в Настройки репозиторияПеременные репозитория и добавьте данные для доступа к движку переводов:

Для пользователей raw LLM API:

  • Имя переменной: OPENAI_API_KEY или ANTHROPIC_API_KEY
  • Значение переменной: ваш API-ключ от соответствующего провайдера

Для пользователей Lingo.dev Engine:

  • Имя переменной: LINGODOTDEV_API_KEY
  • Значение переменной: ваш project API-ключ из lingo.dev/app

Добавьте Bitbucket Access Token (для режима Pull Request)

Если вы планируете использовать режим pull request, создайте access token:

  1. Перейдите в Настройки репозиторияAccess tokensCreate Repository Access Token
  2. Дайте следующие права:
    • Чтение и запись репозиториев
    • Чтение и запись pull request'ов
  3. Добавьте токен как переменную репозитория:
    • Имя переменной: BB_TOKEN
    • Значение переменной: ваш Bitbucket access token

Шаг 2. Создайте workflow

Создайте или обновите ваш файл bitbucket-pipelines.yml с этой базовой конфигурацией:

script:
  - pipe: lingodotdev/lingo.dev:main

Эта конфигурация использует pipe Lingo.dev и автоматически запускает движок перевода.

Необходимые разрешения

Bitbucket Pipelines требует доступ к переменным репозитория и git-операциям:

Переменные репозитория:

  • LINGODOTDEV_API_KEY — требуется для пользователей Lingo.dev Engine
  • OPENAI_API_KEY или ANTHROPIC_API_KEY — требуется для пользователей raw LLM API

Для режима Pull Request:

  • BB_TOKEN — требуется для создания и управления pull request'ами

Права доступа токена (при использовании режима pull request):

  • Чтение и запись репозиториев — доступ и изменение содержимого репозитория
  • Чтение и запись pull request'ов — создание и управление pull request'ами

Эти разрешения позволяют интеграции читать ваш контент, генерировать переводы и обновлять репозиторий с локализованным контентом.

Шаг 3. Выберите режим workflow

Интеграция Lingo.dev с Bitbucket поддерживает два режима работы в зависимости от требований вашей команды к code review.

Режим прямого коммита (по умолчанию)

Интеграция коммитит переводы напрямую в вашу ветку:

script:
  - pipe: lingodotdev/lingo.dev:main

Этот режим лучше всего подходит для:

  • Соло-разработчиков или маленьких команд
  • Фичевых веток, которые будут проверяться перед слиянием
  • Проектов, где обновления переводов не требуют отдельного ревью

Режим Pull Request

Интеграция создаёт pull request'ы для обновлений переводов:

script:
  - pipe: lingodotdev/lingo.dev:main
    variables:
      LINGODOTDEV_PULL_REQUEST: "true"

Необходимая настройка для режима pull request

Переменные репозитория: И LINGODOTDEV_API_KEY, и BB_TOKEN должны быть настроены как переменные репозитория.

Требования к access token: Ваш BB_TOKEN должен иметь права на чтение и запись для репозиториев и pull request'ов.

Примечание: Переменная BB_TOKEN обязательна при использовании режима pull request.

Этот режим лучше всего подходит для:

  • Команд с жёсткими требованиями к code review
  • Проектов, где изменения переводов требуют отдельного одобрения
  • Воркфлоу, где все изменения должны проходить явную проверку

Шаг 4. Сценарии рабочего процесса

Интеграция Lingo.dev с Bitbucket адаптируется под разные рабочие процессы разработки. Понимание этих сценариев поможет выбрать подходящую конфигурацию для вашей команды.

Сценарий 1: Обновления в feature-ветках (прямые коммиты)

Триггер: Push в feature-ветки Действие: Коммитит обновления переводов прямо в feature-ветку

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main

Процесс: Изменения контента отправляются в feature-ветку → Интеграция коммитит переводы в ту же ветку

Это позволяет держать обновления переводов в feature-ветке, чтобы переводы проверялись вместе с основными изменениями.

Сценарий 2: Pull request'ы для обновлений (режим pull request)

Триггер: Push в любую настроенную ветку Действие: Создаёт pull request с обновлениями переводов

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main
              variables:
                LINGODOTDEV_API_KEY: "${MY_LINGODOTDEV_API_KEY}" # or OPENAI_API_KEY/ANTHROPIC_API_KEY
                BB_TOKEN: "${MY_ACCESS_TOKEN}"
                LINGODOTDEV_PULL_REQUEST: "true"
                LINGODOTDEV_PULL_REQUEST_TITLE: "feat: update translations"
                LINGODOTDEV_COMMIT_MESSAGE: "feat: update translations"
                LINGODOTDEV_WORKING_DIRECTORY: "apps/web"
                LINGODOTDEV_PROCESS_OWN_COMMITS: "true"

Процесс: Изменения контента отправляются в ветку → Интеграция создаёт pull request с переводами

Это обеспечивает отдельную проверку обновлений переводов.

Расширенная настройка

Настройте поведение интеграции с помощью дополнительных переменных:

Пример с Lingo.dev Engine:

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main
              variables:
                LINGODOTDEV_API_KEY: "${MY_LINGODOTDEV_API_KEY}"
                BB_TOKEN: "${MY_ACCESS_TOKEN}"
                LINGODOTDEV_PULL_REQUEST: "true"
                LINGODOTDEV_PULL_REQUEST_TITLE: "feat: update translations"
                LINGODOTDEV_COMMIT_MESSAGE: "feat: update translations"
                LINGODOTDEV_WORKING_DIRECTORY: "apps/web"
                LINGODOTDEV_PROCESS_OWN_COMMITS: "true"

Пример с raw LLM API:

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main
              variables:
                OPENAI_API_KEY: "${MY_OPENAI_API_KEY}" # or ANTHROPIC_API_KEY
                BB_TOKEN: "${MY_ACCESS_TOKEN}"
                LINGODOTDEV_PULL_REQUEST: "true"
                LINGODOTDEV_PULL_REQUEST_TITLE: "feat: update translations"
                LINGODOTDEV_COMMIT_MESSAGE: "feat: update translations"
                LINGODOTDEV_WORKING_DIRECTORY: "apps/web"
                LINGODOTDEV_PROCESS_OWN_COMMITS: "true"

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

  • LINGODOTDEV_API_KEY — ваш API-ключ Lingo.dev Engine, если используете Lingo.dev Engine
  • OPENAI_API_KEY — ваш OpenAI API-ключ, если используете raw LLM API
  • ANTHROPIC_API_KEY — ваш Anthropic API-ключ, если используете raw LLM API
  • LINGODOTDEV_PULL_REQUEST — создавать pull request вместо прямого коммита (по умолчанию: false)
  • LINGODOTDEV_PULL_REQUEST_TITLE — свой заголовок pull request (по умолчанию: feat: update translations via @lingodotdev)
  • LINGODOTDEV_COMMIT_MESSAGE — свой commit message (по умолчанию: feat: update translations via @lingodotdev)
  • LINGODOTDEV_WORKING_DIRECTORY — запускать интеграцию в поддиректории (по умолчанию: .)
  • LINGODOTDEV_PROCESS_OWN_COMMITS — обрабатывать коммиты, сделанные этой интеграцией (по умолчанию: false)
  • BB_TOKEN — Bitbucket access token (требуется для режима pull request)