Bitbucket Pipelines

Traduction IA avec Bitbucket Pipelines et Lingo.dev CI/CD

L'intégration Lingo.dev pour Bitbucket Pipelines est une intégration CI/CD sécurisée et open source qui localise automatiquement le nouveau contenu et empêche les traductions incomplètes d'atteindre la production. Elle crée des pull requests ou effectue des commits directement sur votre branche, selon les exigences de flux de travail de votre équipe.

Elle implémente également la résolution automatique des conflits par rebasage, afin que vos traductions restent synchronisées avec votre code sans intervention manuelle.

L'intégration prend en charge plusieurs scénarios de flux de travail :

  1. Commits directs sur les branches lorsque des modifications de contenu sont poussées
  2. Pull requests ciblant les branches pour les mises à jour de traduction

À la fin de ce guide, vous serez en mesure de :

  1. Configurer la localisation automatisée déclenchée par les pushs de code ;
  2. Configurer l'authentification sécurisée à l'aide de variables de dépôt ;
  3. Choisir entre les flux de travail de commits directs ou de pull requests ;
  4. Comprendre comment la localisation continue s'intègre dans votre processus existant.

Commençons !

Prérequis

Configuration du dépôt

Votre dépôt doit avoir la CLI Lingo.dev configurée avec un fichier i18n.json valide. Si vous ne l'avez pas encore configuré, complétez d'abord le démarrage rapide CLI.

Étape 1. Configuration de l'authentification

L'intégration Lingo.dev pour Bitbucket nécessite un accès à votre moteur de traduction et à votre dépôt. L'authentification s'effectue via des variables de dépôt qui sécurisent vos identifiants.

Ajoutez votre clé API

Accédez aux Paramètres du dépôtVariables du dépôt de votre dépôt, puis ajoutez vos identifiants du moteur de traduction :

Pour les utilisateurs d'API LLM brute :

  • Nom de la variable : OPENAI_API_KEY ou ANTHROPIC_API_KEY
  • Valeur de la variable : votre clé API du fournisseur respectif

Pour les utilisateurs du moteur Lingo.dev :

  • Nom de la variable : LINGODOTDEV_API_KEY
  • Valeur de la variable : votre clé API de projet depuis lingo.dev/app

Ajoutez le jeton d'accès Bitbucket (pour le mode pull request)

Si vous prévoyez d'utiliser le mode pull request, créez un jeton d'accès :

  1. Accédez à Paramètres du dépôtJetons d'accèsCréer un jeton d'accès au dépôt
  2. Accordez ces portées :
    • Lecture et écriture des dépôts
    • Lecture et écriture des pull requests
  3. Ajoutez le jeton comme variable du dépôt :
    • Nom de la variable : BB_TOKEN
    • Valeur de la variable : Votre jeton d'accès Bitbucket

Étape 2. Créer le workflow

Créez ou mettez à jour votre fichier bitbucket-pipelines.yml avec cette configuration de base :

script:
  - pipe: lingodotdev/lingo.dev:main

Cette configuration utilise le pipe Lingo.dev et exécute automatiquement le moteur de traduction.

Autorisations requises

Bitbucket Pipelines nécessite l'accès aux variables du dépôt et aux opérations git :

Variables du dépôt :

  • LINGODOTDEV_API_KEY — Obligatoire pour les utilisateurs de Lingo.dev Engine
  • OPENAI_API_KEY ou ANTHROPIC_API_KEY — Obligatoire pour les utilisateurs d'API LLM brute

Pour le mode pull request :

  • BB_TOKEN — Obligatoire pour créer et gérer les pull requests

Portées du jeton d'accès (lors de l'utilisation du mode pull request) :

  • Lecture et écriture des dépôts — Accéder et modifier le contenu du dépôt
  • Lecture et écriture des pull requests — Créer et gérer les pull requests

Ces autorisations permettent à l'intégration de lire votre contenu, de générer des traductions et de mettre à jour votre dépôt avec le contenu localisé.

Étape 3. Choisir votre mode de workflow

L'intégration Lingo.dev Bitbucket prend en charge deux modes opérationnels selon les exigences de revue de code de votre équipe.

Mode commit direct (par défaut)

L'intégration commit les traductions directement sur votre branche :

script:
  - pipe: lingodotdev/lingo.dev:main

Ce mode convient particulièrement pour :

  • Les développeurs solo ou les petites équipes
  • Les branches de fonctionnalités qui seront revues avant fusion
  • Les projets où les mises à jour de traduction ne nécessitent pas de revue séparée

Mode pull request

L'intégration crée des pull requests pour les mises à jour de traduction :

script:
  - pipe: lingodotdev/lingo.dev:main
    variables:
      LINGODOTDEV_PULL_REQUEST: "true"

Configuration requise pour le mode pull request

Variables du dépôt : LINGODOTDEV_API_KEY et BB_TOKEN doivent tous deux être configurés comme variables du dépôt.

Exigences du jeton d'accès : Votre BB_TOKEN doit inclure les permissions de lecture et d'écriture pour les dépôts et les pull requests.

Remarque : La variable BB_TOKEN est obligatoire lors de l'utilisation du mode pull request.

Ce mode convient particulièrement pour :

  • Les équipes avec des exigences strictes de revue de code
  • Les projets où les modifications de traduction nécessitent une approbation séparée
  • Les flux de travail qui requièrent une revue explicite de tous les changements

Étape 4. Scénarios de flux de travail

L'intégration Lingo.dev pour Bitbucket s'adapte à différents flux de travail de développement. Comprendre ces scénarios vous aide à choisir la configuration appropriée pour votre équipe.

Scénario 1 : Mises à jour de branche de fonctionnalité (commits directs)

Déclencheur : Push vers les branches de fonctionnalité Action : Commit les mises à jour de traduction directement sur la branche de fonctionnalité

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main

Flux : Modifications de contenu poussées vers la branche de fonctionnalité → L'intégration commit les traductions sur la même branche

Cela maintient les mises à jour de traduction au sein de la branche de fonctionnalité, garantissant que les traductions sont revues en même temps que les modifications originales.

Scénario 2 : Pull requests pour les mises à jour (mode pull request)

Déclencheur : Push vers n'importe quelle branche configurée Action : Crée une pull request avec les mises à jour de traduction

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main
              variables:
                LINGODOTDEV_API_KEY: "${MY_LINGODOTDEV_API_KEY}" # or OPENAI_API_KEY/ANTHROPIC_API_KEY
                BB_TOKEN: "${MY_ACCESS_TOKEN}"
                LINGODOTDEV_PULL_REQUEST: "true"
                LINGODOTDEV_PULL_REQUEST_TITLE: "feat: update translations"
                LINGODOTDEV_COMMIT_MESSAGE: "feat: update translations"
                LINGODOTDEV_WORKING_DIRECTORY: "apps/web"
                LINGODOTDEV_PROCESS_OWN_COMMITS: "true"

Flux : Modifications de contenu poussées vers la branche → L'intégration crée une pull request avec les traductions

Cela maintient des revues séparées pour les mises à jour de traduction.

Configuration avancée

Personnalisez le comportement de l'intégration en utilisant des variables supplémentaires :

Exemple avec le moteur Lingo.dev :

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main
              variables:
                LINGODOTDEV_API_KEY: "${MY_LINGODOTDEV_API_KEY}"
                BB_TOKEN: "${MY_ACCESS_TOKEN}"
                LINGODOTDEV_PULL_REQUEST: "true"
                LINGODOTDEV_PULL_REQUEST_TITLE: "feat: update translations"
                LINGODOTDEV_COMMIT_MESSAGE: "feat: update translations"
                LINGODOTDEV_WORKING_DIRECTORY: "apps/web"
                LINGODOTDEV_PROCESS_OWN_COMMITS: "true"

Exemple avec l'API LLM brute :

image:
  name: atlassian/default-image:2

pipelines:
  branches:
    feat/*:
      - step:
          name: Run i18n
          script:
            - pipe: lingodotdev/lingo.dev:main
              variables:
                OPENAI_API_KEY: "${MY_OPENAI_API_KEY}" # or ANTHROPIC_API_KEY
                BB_TOKEN: "${MY_ACCESS_TOKEN}"
                LINGODOTDEV_PULL_REQUEST: "true"
                LINGODOTDEV_PULL_REQUEST_TITLE: "feat: update translations"
                LINGODOTDEV_COMMIT_MESSAGE: "feat: update translations"
                LINGODOTDEV_WORKING_DIRECTORY: "apps/web"
                LINGODOTDEV_PROCESS_OWN_COMMITS: "true"

Options de configuration :

  • LINGODOTDEV_API_KEY — Votre clé API Lingo.dev Engine, si vous utilisez Lingo.dev Engine
  • OPENAI_API_KEY — Votre clé API OpenAI, si vous utilisez l'API LLM brute
  • ANTHROPIC_API_KEY — Votre clé API Anthropic, si vous utilisez l'API LLM brute
  • LINGODOTDEV_PULL_REQUEST — Créer une pull request au lieu d'un commit direct (par défaut : false)
  • LINGODOTDEV_PULL_REQUEST_TITLE — Titre personnalisé de la pull request (par défaut : feat: update translations via @lingodotdev)
  • LINGODOTDEV_COMMIT_MESSAGE — Message de commit personnalisé (par défaut : feat: update translations via @lingodotdev)
  • LINGODOTDEV_WORKING_DIRECTORY — Exécuter l'intégration dans un sous-répertoire (par défaut : .)
  • LINGODOTDEV_PROCESS_OWN_COMMITS — Traiter les commits effectués par cette intégration (par défaut : false)
  • BB_TOKEN — Jeton d'accès Bitbucket (requis pour le mode pull request)