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: Lingo.dev Platform API Key (обязательный)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)
Пример с кастомными параметрами:
- 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 }}