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 en CI/CD, garantissant que les traductions ne deviennent 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 requis pour effectuer certaines actions au sein d'un pipeline.

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

L'un ou l'autre peut être utilisé, 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, saisissez un nom pour le jeton (par exemple, « Lingo.dev »).

  6. Activez les portées suivantes.

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

Jetons d'accès de 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 portées suivantes.

    • api
    • read_repository
    • write_repository
  7. Sélectionnez Créer un jeton d'accès de 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 workflow

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

  • Lorsque du contenu est fusionné dans main, commiter les traductions vers main
  • Lorsque du contenu est fusionné dans main, créer une merge request depuis main
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, commiter les traductions vers la branche
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, créer une merge request depuis la branche

Mais il n'existe pas de workflow « idéal ». Tous comportent des compromis. Si vous ne savez pas par où commencer, nous recommandons de débuter avec la première option. C'est le workflow 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: GitLab CI pipeline for Lingo.dev"
    git push
    

(Optionnel) É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 toutefois les remplacer en utilisant les flags CLI de la commande ci,

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

Pour consulter toutes les options disponibles, voir Commandes CLI.

Exemples de pipelines

Commit vers main

Lorsque du contenu est fusionné dans main, valider les traductions dans 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

Merge request depuis main

Lorsque du contenu est fusionné dans main, créer une demande de fusion à partir de 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é, valider les traductions dans la 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

Merge request depuis une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, créer une demande de fusion à partir de la 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