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 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 nie veralten. Es basiert auf der 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 man Lingo.dev CI/CD mit GitLab CI/CD und der Lingo.dev Engine einrichtet.

Schritt 1. Einrichtung der Lingo.dev CLI

Befolgen Sie zunächst den Schnellstart für die Lingo.dev CLI.

Am Ende sollten Sie Folgendes haben:

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

Schritt 2. Zugriffstoken erhalten

In GitLab CI/CD wird ein Zugriffstoken benötigt, um bestimmte Aktionen innerhalb einer Pipeline durchzuführen.

Es gibt zwei Arten von Zugriffstoken:

Beide können verwendet werden, aber nur persönliche Zugriffstoken stehen nicht zahlenden Nutzern von GitLab zur Verfügung.

Persönliche Zugriffstoken

  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 Zugriffstoken.

  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 Berechtigungsbereiche.

    • api
    • read_repository
    • write_repository
  7. Wählen Sie Persönlichen Zugriffstoken erstellen.

Projekt-Zugriffstokens

  1. Navigieren Sie zu einem Projekt in GitLab.

  2. Wählen Sie Einstellungen > Zugriffstokens.

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

  4. Geben Sie unter Token-Name einen Namen ein.

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

  6. Aktivieren Sie die folgenden Berechtigungen.

    • api
    • read_repository
    • write_repository
  7. Wählen Sie Projekt-Zugriffstoken erstellen.

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 Variable schützen beim Erstellen von Variablen.

Lingo.dev API-Schlüssel

  1. Navigieren Sie zu Einstellungen > CI/CD.
  2. Erweitern Sie den Abschnitt Variablen.
  3. Klicken Sie auf Variable hinzufügen.
  4. Geben Sie im Feld Schlüssel LINGODOTDEV_API_KEY ein.
  5. Geben Sie im Feld Wert einen Lingo.dev API-Schlüssel ein.
  6. Wählen Sie Sichtbarkeit > Maskiert.
  7. Klicken Sie auf Variable hinzufügen.

GitLab-Zugriffstoken

  1. Navigieren Sie zu Einstellungen > CI/CD.
  2. Erweitern Sie den Abschnitt Variablen.
  3. Klicken Sie auf Variable hinzufügen.
  4. Geben Sie im Feld Schlüssel GL_TOKEN ein.
  5. Geben Sie im Feld Wert ein GitLab-Zugriffstoken ein.
  6. Wählen Sie Sichtbarkeit > Maskiert.
  7. Klicken Sie auf Variable hinzufügen.

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 zusammengeführt werden, Übersetzungen in main committen
  • Wenn Inhalte in main zusammengeführt werden, einen Merge Request von main erstellen
  • Wenn Inhalte in einen Feature-Branch zusammengeführt werden, Übersetzungen in den Branch committen
  • Wenn Inhalte in einen Feature-Branch zusammengeführt 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, unsichtbarste Workflow.

Schritt 4. Pipeline einrichten

  1. Erstellen Sie im Repository-Stammverzeichnis 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 zum 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 "Meine benutzerdefinierte Commit-Nachricht!"

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

Beispiel-Pipelines

Commit zum main-Branch

Wenn Inhalte in main gemergt 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 gemergt 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 zum Feature-Branch

Wenn Inhalte in einen Feature-Branch gemergt 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 vom Feature-Branch

Wenn Inhalte in einen Feature-Branch gemergt 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