GitHub Actions
AI-перевод с помощью GitHub Actions и Lingo.dev CI/CD
Что такое GitHub Actions?
GitHub Actions — это платформа CI/CD и автоматизации, встроенная в GitHub. Она позволяет пользователям определять рабочие процессы в YAML-файлах для сборки, тестирования и деплоя кода или автоматизации задач, запускаемых событиями в репозитории.
Что такое Lingo.dev CI/CD?
Lingo.dev CI/CD — это инструмент на базе ИИ для локализации приложений и контента в CI/CD, который гарантирует, что переводы всегда актуальны. Для GitHub Lingo.dev предоставляет собственный GitHub Action, упрощающий интеграцию.
О данном руководстве
В этом руководстве объясняется, как настроить Lingo.dev CI/CD с помощью Lingo.dev GitHub Action и Lingo.dev Engine.
Шаг 1. Установите Lingo.dev CLI
Для начала следуйте быстрому старту для Lingo.dev CLI.
В итоге у вас будет:
- API-ключ для Lingo.dev
- файл
i18n.json, который настраивает поведение пайплайна перевода - возможность переводить контент с помощью
npx lingo.dev@latest run
Шаг 2. Настройте секрет репозитория
- Перейдите в Settings > Secrets and variables > Actions.
- Нажмите New repository secret.
- В поле Name введите
LINGODOTDEV_API_KEY. - В поле Secret введите API-ключ Lingo.dev.
- Нажмите Add secret.
Шаг 3. Выберите рабочий процесс
Вы можете настроить Lingo.dev CI/CD по-разному, чтобы поддерживать разные рабочие процессы. Вот некоторые из рекомендуемых нами вариантов (и примеры для них):
- Когда контент сливается в
main, переводы коммитятся вmain - Когда контент сливается в
main, создаётся pull request изmain - Когда контент объединяется в feature-ветку, переводы коммитятся в эту ветку
- Когда контент объединяется в feature-ветку, создаётся pull request из этой ветки
Но не существует «лучшего» рабочего процесса. У каждого есть свои плюсы и минусы. Если не знаешь, с чего начать, советуем выбрать первый вариант. Это самый простой и незаметный рабочий процесс.
Шаг 4. Настрой рабочий процесс
-
В репозитории создай директорию
.github/workflows:mkdir -p .github/workflowsОбязательно добавь
.в начало.github. -
В директории
.github/workflowsсоздай YAML-файл:touch .github/workflows/translate.ymlИмя файла не важно.
-
Скопируй один из примеров workflow в файл.
-
Если workflow создаёт pull request'ы:
- Перейди в Settings > Actions > General.
- Включи Allow GitHub Actions to create and approve pull requests.
- Нажми Save.
-
Зафиксируй и отправь изменения в ветку
main:git add .github/workflows/translate.yml git commit -m "feat: GitHub action for Lingo.dev" git push
(Необязательно) Шаг 5. Кастомизируй рабочий процесс
Lingo.dev CI/CD использует значения по умолчанию, которые в большинстве случаев менять не нужно. Их можно переопределить, передав параметры в GitHub Action:
Доступные параметры:
version: версия Lingo.dev CLI (по умолчанию:"latest")api-key: API-ключ платформы Lingo.dev (обязательно)pull-request: Создать pull request с изменениями (по умолчанию:false)commit-message: Кастомное сообщение коммита (по умолчанию:"feat: update translations via @LingoDotDev")pull-request-title: Кастомный заголовок pull request (по умолчанию:"feat: update translations via @LingoDotDev")commit-author-name: Имя автора коммита в Git (по умолчанию:"Lingo.dev")commit-author-email: Email автора коммита в Git (по умолчанию:"[email protected]")working-directory: Рабочая директория (по умолчанию:".")process-own-commits: Обрабатывать коммиты, сделанные этим действием (по умолчанию:false)parallel: Запускать в параллельном режиме (по умолчанию:false)gpg-sign: Включить подпись коммитов GPG (по умолчанию:false). Подробнее см. Подпись коммитов GPG ниже.
Пример с кастомными параметрами:
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
commit-message: "My custom commit message!"
parallel: true
Примеры workflow
Коммит в main
Когда контент объединяется в main, переводы коммитятся в main.
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
Pull request из main
Когда контент объединяется в main, создается pull request из 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: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Коммит в feature-ветку
Когда контент объединяется в feature-ветку, переводы коммитятся в эту ветку.
name: Translate
on:
push:
branches-ignore: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
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: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Подпись коммитов GPG
Если в вашем репозитории требуются подписанные коммиты (правила защиты веток), добавьте шаг импорта GPG перед действием Lingo.dev:
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
gpg-sign: true
Сохраните ваш приватный GPG-ключ в base64-кодировке как GPG_PRIVATE_KEY в секретах репозитория. Если у ключа нет пароля, опустите строку passphrase.