GitHub Actions

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

Что такое GitHub Actions?

GitHub Actions — это встроенная в GitHub платформа для CI/CD и автоматизации. Она позволяет пользователям определять рабочие процессы в YAML-файлах для сборки, тестирования, развертывания кода или автоматизации задач, запускаемых событиями в репозитории.

Что такое Lingo.dev CI/CD?

Lingo.dev CI/CD — это инструмент на базе ИИ для локализации приложений и контента в CI/CD, который гарантирует, что переводы всегда будут актуальными. Он построен на основе Lingo.dev CLI и доступен через команду ci:

npx lingo.dev@latest ci --help

О данном руководстве

Это руководство объясняет, как настроить Lingo.dev CI/CD с помощью GitHub Actions и Lingo.dev Engine.

Шаг 1. Настройка Lingo.dev CLI

Для начала выполните шаги из Quickstart для Lingo.dev CLI.

В результате у вас должны быть:

  • API-ключ для Lingo.dev
  • файл i18n.json, который настраивает поведение конвейера перевода
  • возможность переводить контент с помощью команды npx lingo.dev@latest run

Шаг 2. Настройка секретного ключа репозитория

  1. Перейдите в Настройки > Секреты и переменные > Действия.
  2. Нажмите Новый секрет репозитория.
  3. В поле Имя введите LINGODOTDEV_API_KEY.
  4. В поле Секрет введите API-ключ Lingo.dev.
  5. Нажмите Добавить секрет.

Шаг 3. Выбор рабочего процесса

Вы можете настроить Lingo.dev CI/CD разными способами для поддержки различных рабочих процессов. Вот некоторые из рекомендуемых нами рабочих процессов (с примерами):

  • Когда контент объединяется в main, переводы коммитятся в main
  • Когда контент объединяется в main, создается pull request из main
  • Когда контент объединяется в feature-ветку, переводы коммитятся в эту ветку
  • Когда контент объединяется в feature-ветку, создается pull request из этой ветки

Но нет "лучшего" рабочего процесса. У каждого есть свои плюсы и минусы. Если вы не уверены, с чего начать, мы рекомендуем выбрать первый вариант. Это самый простой и незаметный рабочий процесс.

Шаг 4. Настройте рабочий процесс

  1. В репозитории создайте директорию .github/workflows:

    mkdir -p .github/workflows
    

    Убедитесь, что включили точку (.) в начале .github.

  2. В директории .github/workflows создайте YAML-файл:

    touch .github/workflows/translate.yml
    

    Имя файла не имеет значения.

  3. Скопируйте один из примеров рабочих процессов в файл.

  4. Если рабочий процесс создает pull-запросы:

    1. Перейдите в Настройки > Действия > Общие.
    2. Включите Разрешить GitHub Actions создавать и утверждать pull-запросы.
    3. Нажмите Сохранить.
  5. Закоммитьте и отправьте изменения в ветку main:

    git add .github/workflows/translate.yml
    git commit -m "feat: GitHub action for Lingo.dev"
    git push
    

(Опционально) Шаг 5. Настройте рабочий процесс

Lingo.dev CI/CD имеет значения по умолчанию, которые в большинстве случаев не требуют настройки. Однако вы можете переопределить их, используя флаги CLI команды ci.

npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY" --commit-message "Мое пользовательское сообщение коммита!"

Чтобы просмотреть все доступные параметры, смотрите CLI команды.

Примеры рабочих процессов

Коммит в main

Когда контент объединяется в main, коммит переводов выполняется в main.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Lingo.dev
        run: npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}

Посмотреть на GitHub

Pull-запрос из main

Когда контент объединяется в main, создается pull-запрос из main.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Lingo.dev
        run: npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Посмотреть на GitHub

Коммит в feature-ветку

Когда контент сливается в feature-ветку, коммиты с переводами добавляются в эту ветку.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Lingo.dev (commit to non-main)
        run: npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}

Посмотреть на GitHub

Pull request из feature-ветки

Когда контент сливается в feature-ветку, создается pull request из этой ветки.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Lingo.dev
        run: npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Посмотреть на GitHub