Bitbucket Pipelines

Обновлено: 3 дня назад · 2 мин чтения

В Bitbucket запустите @lingo.dev/cli в шаге пайплайна: установите его, выполните lingo push, чтобы перевести изменённые строки через ваш движок, затем зафиксируйте результаты или откройте pull request с помощью встроенных инструментов Bitbucket.

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

Вам понадобится зафиксированный файл .lingo/config.json (с engineId, исходной и целевыми локалями и паттернами files), а также API-ключ Lingo.dev, сохранённый как переменная репозитория. Чтобы создать конфигурацию, см. быстрый старт CLI.

Аутентификация#

CLI аутентифицируется через переменную окружения LINGO_API_KEY. Добавьте ключ как защищённую переменную репозитория, чтобы она была доступна шагам пайплайна:

Настройки репозитория > Переменные репозитория — добавьте LINGO_API_KEY и отметьте её как защищённую.

Чтобы пайплайн мог фиксировать коммиты или открывать pull request в репозитории, ему нужен доступ на запись в Git. Стандартные варианты: SSH-ключ репозитория (Настройки репозитория > SSH-ключи) или токен доступа к репозиторию с областью Чтение и запись репозиториев (и pull request для PR-режима), сохранённый как защищённая переменная репозитория — например BB_TOKEN.

Примеры рабочего процесса#

Прямой коммит (по умолчанию)#

Установите CLI, выполните lingo push --wait и зафиксируйте переведённые файлы обратно в ветку:

yaml
image: node:22

pipelines:
  branches:
    main:
      - step:
          name: Translate
          script:
            - npm install -g @lingo.dev/cli
            - lingo push --wait
            - git config user.name "lingo-bot"
            - git config user.email "support@lingo.dev"
            - git add .
            - git diff --cached --quiet || git commit -m "chore: update translations"
            - git push origin HEAD:main

lingo push --wait переводит только изменения с момента последнего запуска (они отслеживаются в .lingo/lock.json), дожидается завершения и записывает результаты на диск. Без --wait команда push завершает работу сразу после отправки запуска — фиксировать нечего.

Режим pull request#

Отправьте переводы в отдельную ветку вместо коммита в main, а затем откройте pull request с помощью инструментов Bitbucket:

yaml
image: node:22

pipelines:
  branches:
    main:
      - step:
          name: Translate
          script:
            - npm install -g @lingo.dev/cli
            - lingo push --wait
            - git config user.name "lingo-bot"
            - git config user.email "support@lingo.dev"
            - git checkout -b lingo/translations
            - git add .
            - git diff --cached --quiet || git commit -m "feat: update translations"
            - git push origin lingo/translations
            # Open a PR from lingo/translations into main via the Bitbucket UI or API

Монорепозиторий#

Запустите CLI из поддиректории, если конфигурация находится внутри рабочего пространства. CLI разрешает .lingo/config.json относительно рабочей директории:

yaml
image: node:22

pipelines:
  branches:
    main:
      - step:
          name: Translate
          script:
            - cd apps/web
            - npm install -g @lingo.dev/cli
            - lingo push --wait

Переменные пайплайна#

ПеременнаяОбязательноОписание
LINGO_API_KEYДаAPI-ключ Lingo.dev. Сохраните как защищённую переменную репозитория.
BB_TOKENДля записи при push/PRТокен доступа к репозиторию (или SSH-ключ), который Git использует для коммитов или открытия pull request.

Всё остальное — исходная локаль, целевые локали, паттерны файлов и движок для маршрутизации — хранится в .lingo/config.json, а не в переменных пайплайна.

Проверка перед деплоем#

Добавьте шаг lingo check, чтобы пайплайн завершался с ошибкой, если у какой-то исходной строки нет перевода:

yaml
- step:
          name: Check translations
          script:
            - npm install -g @lingo.dev/cli
            - lingo check

Что дальше#