GitLab CI/CD

GitLab CI/CDとLingo.dev CI/CDによるAI翻訳

GitLab CI/CDとは?

GitLab CI/CDはGitLabに組み込まれた継続的インテグレーションおよびデプロイメントプラットフォームです。ユーザーはYAMLファイルでパイプラインを定義し、コードのビルド、テスト、デプロイ、またはリポジトリイベントによってトリガーされるタスクの自動化を行うことができます。

Lingo.dev CI/CDとは?

Lingo.dev CI/CDはCI/CD環境でアプリやコンテンツをローカライズするためのAI駆動ツールで、翻訳が常に最新の状態に保たれることを保証します。これはLingo.dev CLIの上に構築されており、ciコマンドで利用できます:

npx lingo.dev@latest ci --help

このガイドについて

このガイドでは、Lingo.dev CI/CDをGitLab CI/CDとLingo.dev Engineで設定する方法を説明します。

ステップ1. Lingo.dev CLIのセットアップ

まず、Lingo.dev CLIクイックスタートに従ってください。

以下のものが必要になります:

  • Lingo.devのAPIキー
  • 翻訳パイプラインの動作を設定するi18n.jsonファイル
  • npx lingo.dev@latest runでコンテンツを翻訳する機能

ステップ2. アクセストークンの取得

GitLab CI/CDでは、パイプライン内で特定のアクションを実行するためにアクセストークンが必要です。

アクセストークンには2種類あります:

どちらも使用可能ですが、個人用アクセストークンのみがGitLabの無料ユーザーが利用できます。

個人用アクセストークン

  1. 左サイドバーで、アバターを選択します。

  2. プロフィールの編集を選択します。

  3. 左サイドバーでアクセストークンを選択します。

  4. 新しいトークンを追加を選択します。

  5. トークン名に、トークンの名前(例:「Lingo.dev」)を入力します。

  6. 以下のスコープを有効にします。

    • api
    • read_repository
    • write_repository
  7. 個人用アクセストークンの作成を選択します。

プロジェクトアクセストークン

  1. GitLabでプロジェクトに移動します。

  2. 設定 > アクセストークンを選択します。

  3. 新しいトークンを追加を選択します。

  4. トークン名に名前を入力します。

  5. トークンの役割を選択します。

  6. 以下のスコープを有効にします。

    • api
    • read_repository
    • write_repository
  7. プロジェクトアクセストークンを作成を選択します。

ステップ2. CI/CD変数の設定

GitLabでは、CI/CD変数によりパイプラインが機密値にアクセスできるようになります。Lingo.devをGitLab CI/CDで使用するには、Lingo.dev APIキーとGitLabアクセストークンの両方が変数として利用可能である必要があります。

警告: デフォルトでは、CI/CD変数は保護されたブランチでのみ利用可能です。保護されたブランチを使用していない場合は、変数作成時に変数を保護するオプションを無効にしてください。

Lingo.dev APIキー

  1. 設定 > CI/CDに移動します。
  2. 変数セクションを展開します。
  3. 変数を追加をクリックします。
  4. キーフィールドにLINGODOTDEV_API_KEYと入力します。
  5. フィールドにLingo.dev APIキーを入力します。
  6. 可視性 > マスクを選択します。
  7. 変数を追加をクリックします。

GitLabアクセストークン

  1. 設定 > CI/CDに移動します。
  2. 変数セクションを展開します。
  3. 変数を追加をクリックします。
  4. キーフィールドにGL_TOKENと入力します。
  5. フィールドにGitLabアクセストークンを入力します。
  6. 可視性 > マスクを選択します。
  7. 変数を追加をクリックします。

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

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

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

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

ステップ 4. パイプラインの設定

  1. リポジトリのルートに.gitlab-ci.ymlファイルを作成します:

    touch .gitlab-ci.yml
    
  2. パイプライン例のいずれかをファイルにコピーします。

  3. 変更をmainブランチにコミットしてプッシュします:

    git add .gitlab-ci.yml
    git commit -m "feat: GitLab CI pipeline 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にコミットします。

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
  only:
    - main

mainからマージリクエスト

コンテンツがmainにマージされたとき、mainからマージリクエストを作成します。

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
  only:
    - main

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

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

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
  only:
    - branches
  except:
    - main

フィーチャーブランチからマージリクエスト

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

image:
  name: lingodotdev/ci-action:latest
  entrypoint: [""]

stages: [translate]

translate:
  stage: translate
  script:
    - npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
  except:
    - main