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. リポジトリシークレットの設定

  1. Settings > Secrets and variables > Actionsに移動します。
  2. New repository secretをクリックします。
  3. NameフィールドにLINGODOTDEV_API_KEYと入力します。
  4. SecretフィールドにLingo.dev APIキーを入力します。
  5. Add secretをクリックします。

ステップ3. ワークフローの選択

異なるワークフローをサポートするために、Lingo.dev CI/CDを様々な方法でセットアップできます。以下は推奨するワークフロー(および提供する例)です:

  • コンテンツがmainにマージされたとき、翻訳をmainにコミットする
  • コンテンツがmainにマージされたとき、mainからプルリクエストを作成する
  • コンテンツがフィーチャーブランチにマージされたとき、翻訳をそのブランチにコミットする
  • コンテンツがフィーチャーブランチにマージされたとき、そのブランチからプルリクエストを作成する

ただし、「最適な」ワークフローはありません。それぞれにトレードオフがあります。どこから始めるべきか迷っている場合は、最初のオプションから始めることをお勧めします。これが最もシンプルで目立たないワークフローです。

ステップ 4. ワークフローの設定

  1. リポジトリ内に .github/workflows ディレクトリを作成します:

    mkdir -p .github/workflows
    

    .github の先頭のドット(.)を必ず含めてください。

  2. .github/workflows ディレクトリ内に YAML ファイルを作成します:

    touch .github/workflows/translate.yml
    

    ファイル名は重要ではありません。

  3. サンプルワークフローのいずれかをファイルにコピーします。

  4. ワークフローがプルリクエストを作成する場合:

    1. Settings > Actions > General に移動します。
    2. Allow GitHub Actions to create and approve pull requests を有効にします。
    3. Save をクリックします。
  5. 変更を 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 }}

GitHub で表示

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 }}

GitHubで表示

フィーチャーブランチへのコミット

コンテンツがフィーチャーブランチにマージされた場合、翻訳をそのブランチにコミットします。

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で表示

フィーチャーブランチからのプルリクエスト

コンテンツがフィーチャーブランチにマージされた場合、そのブランチからプルリクエストを作成します。

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で表示