GitHub Actions
Lingo.dev CI/CDとGitHub Actionsによる AI翻訳
GitHub Actionsとは?
GitHub ActionsはGitHubに組み込まれたCI/CDおよび自動化プラットフォームです。ユーザーはYAMLファイルでワークフローを定義し、コードのビルド、テスト、デプロイ、またはリポジトリイベントによってトリガーされるタスクの自動化を行うことができます。
Lingo.dev CI/CDとは?
Lingo.dev CI/CDはCI/CDでアプリやコンテンツをローカライズするためのAI駆動ツールで、翻訳が古くなることを防ぎます。Lingo.dev CLIの上に構築されており、ciコマンドで利用できます:
npx lingo.dev@latest ci --help
このガイドについて
このガイドでは、GitHub ActionsとLingo.dev Engineを使用してLingo.dev CI/CDをセットアップする方法を説明します。
ステップ1. Lingo.dev CLIのセットアップ
まず、Lingo.dev CLIのクイックスタートに従ってください。
以下のものが必要です:
- Lingo.devのAPIキー
- 翻訳パイプラインの動作を設定する
i18n.jsonファイル npx lingo.dev@latest runでコンテンツを翻訳する機能
ステップ2. リポジトリシークレットの設定
- Settings > Secrets and variables > Actionsに移動します。
- New repository secretをクリックします。
- Nameフィールドに
LINGODOTDEV_API_KEYと入力します。 - SecretフィールドにLingo.dev APIキーを入力します。
- Add secretをクリックします。
ステップ3. ワークフローの選択
異なるワークフローをサポートするために、Lingo.dev CI/CDを様々な方法でセットアップできます。以下は推奨するワークフロー(および提供する例)です:
- コンテンツが
mainにマージされたとき、翻訳をmainにコミットする - コンテンツが
mainにマージされたとき、mainからプルリクエストを作成する - コンテンツがフィーチャーブランチにマージされたとき、翻訳をそのブランチにコミットする
- コンテンツがフィーチャーブランチにマージされたとき、そのブランチからプルリクエストを作成する
ただし、「最適な」ワークフローはありません。それぞれにトレードオフがあります。どこから始めるべきか迷っている場合は、最初のオプションから始めることをお勧めします。これが最もシンプルで目立たないワークフローです。
ステップ 4. ワークフローの設定
-
リポジトリ内に
.github/workflowsディレクトリを作成します:mkdir -p .github/workflows.githubの先頭のドット(.)を必ず含めてください。 -
.github/workflowsディレクトリ内に YAML ファイルを作成します:touch .github/workflows/translate.ymlファイル名は重要ではありません。
-
サンプルワークフローのいずれかをファイルにコピーします。
-
ワークフローがプルリクエストを作成する場合:
- 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 にはデフォルト値があり、ほとんどの場合カスタマイズする必要はありません。ただし、ci コマンドの CLI フラグを使用してこれらをオーバーライドすることができます。
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 }}
main からのプルリクエスト
コンテンツが main にマージされたとき、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 }}
フィーチャーブランチへのコミット
コンテンツがフィーチャーブランチにマージされた場合、翻訳をそのブランチにコミットします。
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 }}
フィーチャーブランチからのプルリクエスト
コンテンツがフィーチャーブランチにマージされた場合、そのブランチからプルリクエストを作成します。
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 }}