Bitbucket Pipelines
AI-перевод с помощью Bitbucket Pipelines и Lingo.dev CI/CD
Интеграция Lingo.dev с Bitbucket Pipelines — это безопасное open-source CI/CD-решение, которое автоматически локализует новый контент и не допускает неполных переводов в продакшн. В зависимости от требований вашего рабочего процесса, интеграция создает pull request или коммитит изменения прямо в вашу ветку.
Также реализовано автоматическое разрешение конфликтов через rebase, чтобы ваши переводы всегда были синхронизированы с кодом без ручного вмешательства.
Интеграция поддерживает несколько сценариев работы:
- Прямые коммиты в ветки при изменении контента
- Pull request'ы в ветки для обновления переводов
После прохождения этого гайда вы сможете:
- Настроить автоматическую локализацию, запускаемую при пуше кода;
- Настроить безопасную аутентификацию с помощью переменных репозитория;
- Выбрать между прямыми коммитами и pull request-процессом;
- Понять, как непрерывная локализация вписывается в ваш текущий процесс.
Поехали!
Необходимые условия
Настройка репозитория
В вашем репозитории должен быть настроен 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:
- Перейдите в Настройки репозитория → Access tokens → Create Repository Access Token
- Дайте следующие права:
- Чтение и запись репозиториев
- Чтение и запись pull request'ов
- Добавьте токен как переменную репозитория:
- Имя переменной:
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 EngineOPENAI_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 EngineOPENAI_API_KEY— ваш OpenAI API-ключ, если используете raw LLM APIANTHROPIC_API_KEY— ваш Anthropic API-ключ, если используете raw LLM APILINGODOTDEV_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)