GitLab CI/CD

Traduction IA avec GitLab CI/CD et Lingo.dev CI/CD

Qu'est-ce que GitLab CI/CD ?

GitLab CI/CD est une plateforme d'intégration et de déploiement continus intégrée à GitLab. Elle permet aux utilisateurs de définir des pipelines dans des fichiers YAML pour construire, tester et déployer du code ou automatiser des tâches déclenchées par des événements du dépôt.

Qu'est-ce que Lingo.dev CI/CD ?

Lingo.dev CI/CD est un outil alimenté par l'IA pour localiser des applications et du contenu dans CI/CD, garantissant que les traductions ne sont jamais obsolètes. Il est construit sur Lingo.dev CLI et disponible via la commande ci :

npx lingo.dev@latest ci --help

À propos de ce guide

Ce guide explique comment configurer Lingo.dev CI/CD avec GitLab CI/CD et Lingo.dev Engine.

Étape 1. Configurer Lingo.dev CLI

Pour commencer, suivez le Démarrage rapide pour Lingo.dev CLI.

Vous devriez obtenir :

  • une clé API pour Lingo.dev
  • un fichier i18n.json qui configure le comportement d'un pipeline de traduction
  • la capacité de traduire du contenu avec npx lingo.dev@latest run

Étape 2. Obtenir un jeton d'accès

Dans GitLab CI/CD, un jeton d'accès est nécessaire pour effectuer certaines actions au sein d'un pipeline.

Il existe deux types de jetons d'accès :

Les deux peuvent être utilisés, mais seuls les jetons d'accès personnels sont disponibles pour les utilisateurs non payants de GitLab.

Jetons d'accès personnels

  1. Dans la barre latérale gauche, sélectionnez votre avatar.

  2. Sélectionnez Modifier le profil.

  3. Dans la barre latérale gauche, sélectionnez Jetons d'accès.

  4. Sélectionnez Ajouter un nouveau jeton.

  5. Dans Nom du jeton, entrez un nom pour le jeton (par exemple, "Lingo.dev").

  6. Activez les périmètres suivants.

    • api
    • read_repository
    • write_repository
  7. Sélectionnez Créer un jeton d'accès personnel.

Jetons d'accès au projet

  1. Accédez à un projet dans GitLab.

  2. Sélectionnez Paramètres > Jetons d'accès.

  3. Sélectionnez Ajouter un nouveau jeton.

  4. Dans Nom du jeton, saisissez un nom.

  5. Sélectionnez un rôle pour le jeton.

  6. Activez les périmètres suivants.

    • api
    • read_repository
    • write_repository
  7. Sélectionnez Créer un jeton d'accès au projet.

Étape 2. Configurer les variables CI/CD

Dans GitLab, les variables CI/CD permettent aux pipelines d'accéder à des valeurs sensibles. Pour utiliser Lingo.dev dans GitLab CI/CD, la clé API Lingo.dev et le jeton d'accès GitLab doivent être disponibles en tant que variables.

Avertissement : Par défaut, les variables CI/CD ne sont disponibles que sur les branches protégées. Si vous n'utilisez pas de branches protégées, désactivez l'option Protéger la variable lors de la création des variables.

Clé API Lingo.dev

  1. Accédez à Paramètres > CI/CD.
  2. Développez la section Variables.
  3. Cliquez sur Ajouter une variable.
  4. Dans le champ Clé, saisissez LINGODOTDEV_API_KEY.
  5. Dans le champ Valeur, saisissez une clé API Lingo.dev.
  6. Sélectionnez Visibilité > Masquée.
  7. Cliquez sur Ajouter une variable.

Jeton d'accès GitLab

  1. Accédez à Paramètres > CI/CD.
  2. Développez la section Variables.
  3. Cliquez sur Ajouter une variable.
  4. Dans le champ Clé, saisissez GL_TOKEN.
  5. Dans le champ Valeur, saisissez un jeton d'accès GitLab.
  6. Sélectionnez Visibilité > Masquée.
  7. Cliquez sur Ajouter une variable.

Étape 3. Choisir un flux de travail

Vous pouvez configurer Lingo.dev CI/CD de différentes manières pour prendre en charge différents flux de travail. Voici quelques-uns des flux de travail que nous recommandons (et pour lesquels nous fournissons des exemples) :

  • Lorsque du contenu est fusionné dans main, valider les traductions dans main
  • Lorsque du contenu est fusionné dans main, créer une demande de fusion à partir de main
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, valider les traductions dans la branche
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, créer une demande de fusion à partir de la branche

Mais il n'y a pas de flux de travail "idéal". Ils présentent tous des compromis. Si vous ne savez pas par où commencer, nous vous recommandons de commencer par la première option. C'est le flux de travail le plus simple et le plus transparent.

Étape 4. Configurer le pipeline

  1. À la racine du dépôt, créez un fichier .gitlab-ci.yml :

    touch .gitlab-ci.yml
    
  2. Copiez l'un des exemples de pipelines dans le fichier.

  3. Validez et poussez les modifications vers la branche main :

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

(Facultatif) Étape 5. Personnaliser le pipeline

Lingo.dev CI/CD possède des valeurs par défaut qui, dans la plupart des cas, n'ont pas besoin d'être personnalisées. Vous pouvez, cependant, les remplacer en utilisant les options CLI de la commande ci,

npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY" --commit-message "Mon message de commit personnalisé !"

Pour voir toutes les options disponibles, consultez Commandes CLI.

Exemples de pipelines

Commit vers main

Lorsque du contenu est fusionné dans main, les traductions sont commitées vers 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

Demande de fusion depuis main

Lorsque du contenu est fusionné dans main, une demande de fusion est créée depuis 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

Commit vers une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, les traductions sont commitées vers cette branche.

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

Demande de fusion depuis une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, une demande de fusion est créée depuis cette branche.

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