GitLab CI/CD

KI-Übersetzung mit GitLab CI/CD und Lingo.dev CI/CD

Was ist GitLab CI/CD?

GitLab CI/CD ist eine in GitLab integrierte Plattform für kontinuierliche Integration und Bereitstellung. Sie ermöglicht es Benutzern, Pipelines in YAML-Dateien zu definieren, um Code zu erstellen, zu testen und bereitzustellen oder Aufgaben zu automatisieren, die durch Repository-Ereignisse ausgelöst werden.

Was ist Lingo.dev CI/CD?

Lingo.dev CI/CD ist ein KI-gestütztes Tool zur Lokalisierung von Apps und Inhalten in CI/CD, das sicherstellt, dass Übersetzungen niemals veralten. Es basiert auf Lingo.dev CLI und ist über den Befehl ci verfügbar:

npx lingo.dev@latest ci --help

Über diesen Leitfaden

Dieser Leitfaden erklärt, wie Sie Lingo.dev CI/CD mit GitLab CI/CD und Lingo.dev Engine einrichten.

Schritt 1. Lingo.dev CLI einrichten

Folgen Sie zunächst dem Quickstart für Lingo.dev CLI.

Sie sollten am Ende Folgendes haben:

  • einen API-Schlüssel für Lingo.dev
  • eine Datei i18n.json, die das Verhalten einer Übersetzungs-Pipeline konfiguriert
  • die Möglichkeit, Inhalte mit npx lingo.dev@latest run zu übersetzen

Schritt 2. Access-Token abrufen

In GitLab CI/CD ist ein Access-Token erforderlich, um bestimmte Aktionen innerhalb einer Pipeline auszuführen.

Es gibt zwei Arten von Access-Tokens:

Beide können verwendet werden, aber nur Personal Access Tokens stehen Nutzern von GitLab ohne kostenpflichtiges Abonnement zur Verfügung.

Personal Access Tokens

  1. Wählen Sie in der linken Seitenleiste Ihren Avatar aus.

  2. Wählen Sie Profil bearbeiten.

  3. Wählen Sie in der linken Seitenleiste Access Tokens.

  4. Wählen Sie Neuen Token hinzufügen.

  5. Geben Sie unter Token-Name einen Namen für den Token ein (z. B. "Lingo.dev").

  6. Aktivieren Sie die folgenden Scopes.

    • api
    • read_repository
    • write_repository
  7. Wählen Sie Create personal access token aus.

Projektzugriffstoken

  1. Navigieren Sie zu einem Projekt in GitLab.

  2. Wählen Sie Settings > Access tokens aus.

  3. Wählen Sie Add new token aus.

  4. Geben Sie unter Token name einen Namen ein.

  5. Wählen Sie eine Rolle für das Token aus.

  6. Aktivieren Sie die folgenden Scopes.

    • api
    • read_repository
    • write_repository
  7. Wählen Sie Create project access token aus.

Schritt 2. CI/CD-Variablen konfigurieren

In GitLab ermöglichen CI/CD-Variablen Pipelines den Zugriff auf sensible Werte. Um Lingo.dev in GitLab CI/CD zu verwenden, müssen sowohl der Lingo.dev-API-Schlüssel als auch das GitLab-Zugriffstoken als Variablen verfügbar sein.

Warnung: Standardmäßig sind CI/CD-Variablen nur auf geschützten Branches verfügbar. Wenn Sie keine geschützten Branches verwenden, deaktivieren Sie die Option Protect variable beim Erstellen von Variablen.

Lingo.dev-API-Schlüssel

  1. Navigieren Sie zu Settings > CI/CD.
  2. Erweitern Sie den Abschnitt Variables.
  3. Klicken Sie auf Add variable.
  4. Geben Sie im Feld Key LINGODOTDEV_API_KEY ein.
  5. Geben Sie im Feld Value einen Lingo.dev-API-Schlüssel ein.
  6. Wählen Sie Visibility > Masked aus.
  7. Klicken Sie auf Add variable.

GitLab-Zugriffstoken

  1. Navigieren Sie zu Settings > CI/CD.
  2. Erweitern Sie den Abschnitt Variables.
  3. Klicken Sie auf Add variable.
  4. Geben Sie im Feld Key GL_TOKEN ein.
  5. Geben Sie im Feld Value ein GitLab-Zugriffstoken ein.
  6. Wählen Sie Visibility > Masked aus.
  7. Klicken Sie auf Add variable.

Schritt 3. Workflow auswählen

Sie können Lingo.dev CI/CD auf verschiedene Arten einrichten, um unterschiedliche Workflows zu unterstützen. Dies sind einige der Workflows, die wir empfehlen (und für die wir Beispiele bereitstellen):

  • Wenn Inhalte in main gemergt werden, Übersetzungen in main committen
  • Wenn Inhalte in main gemergt werden, einen Merge Request von main erstellen
  • Wenn Inhalte in einen Feature-Branch gemergt werden, Übersetzungen in den Branch committen
  • Wenn Inhalte in einen Feature-Branch gemergt werden, einen Merge Request vom Branch erstellen

Es gibt jedoch keinen "besten" Workflow. Alle haben Kompromisse. Wenn Sie nicht sicher sind, wo Sie beginnen sollen, empfehlen wir, mit der ersten Option zu starten. Es ist der einfachste und unauffälligste Workflow.

Schritt 4. Pipeline einrichten

  1. Erstellen Sie im Repository-Root eine .gitlab-ci.yml Datei:

    touch .gitlab-ci.yml
    
  2. Kopieren Sie eine der Beispiel-Pipelines in die Datei.

  3. Committen und pushen Sie die Änderungen in den main Branch:

    git add .gitlab-ci.yml
    git commit -m "feat: GitLab CI pipeline for Lingo.dev"
    git push
    

(Optional) Schritt 5. Pipeline anpassen

Lingo.dev CI/CD hat Standardwerte, die in den meisten Fällen nicht angepasst werden müssen. Sie können diese jedoch mit den CLI-Flags des ci Befehls überschreiben,

npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY" --commit-message "My custom commit message!"

Um alle verfügbaren Optionen anzuzeigen, siehe CLI-Befehle.

Beispiel-Pipelines

Commit in main

Wenn Inhalte in main zusammengeführt werden, Übersetzungen in main committen.

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

Merge Request von main

Wenn Inhalte in main zusammengeführt werden, einen Merge Request von main erstellen.

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

Commit in Feature-Branch

Wenn Inhalte in einen Feature-Branch zusammengeführt werden, Übersetzungen in den Branch committen.

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

Merge Request von Feature-Branch

Wenn Inhalte in einen Feature-Branch zusammengeführt werden, einen Merge Request vom Branch erstellen.

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