Bitbucket Pipelines

Traducción con IA mediante Bitbucket Pipelines y CI/CD de Lingo.dev

La integración de Lingo.dev con Bitbucket Pipelines es una integración CI/CD segura y de código abierto que localiza automáticamente el contenido nuevo y evita que las traducciones incompletas lleguen a producción. Crea pull requests o realiza commits directamente en tu rama, según los requisitos del flujo de trabajo de tu equipo.

También implementa resolución automática de conflictos mediante rebase, para que tus traducciones permanezcan sincronizadas con tu código sin intervención manual.

La integración admite múltiples escenarios de flujo de trabajo:

  1. Commits directos a ramas cuando se envían cambios de contenido
  2. Pull requests dirigidos a ramas para actualizaciones de traducción

Al completar esta guía, podrás:

  1. Configurar la localización automatizada activada por envíos de código;
  2. Configurar la autenticación segura mediante variables de repositorio;
  3. Elegir entre flujos de trabajo de commits directos o pull requests;
  4. Comprender cómo la localización continua se integra en tu proceso existente.

¡Comencemos!

Requisitos previos

Configuración del repositorio

Tu repositorio debe tener Lingo.dev CLI configurado con un archivo i18n.json válido. Si aún no lo has configurado, completa primero el inicio rápido de CLI.

Paso 1. Configuración de autenticación

La integración de Lingo.dev con Bitbucket necesita acceso a tu motor de traducción y repositorio. La autenticación se realiza mediante variables de repositorio que mantienen tus credenciales seguras.

Añade tu clave API

Navega a Configuración del repositorioVariables de repositorio de tu repositorio, luego añade las credenciales de tu motor de traducción:

Para usuarios de API LLM directa:

  • Nombre de variable: OPENAI_API_KEY o ANTHROPIC_API_KEY
  • Valor de variable: tu clave API del proveedor respectivo

Para usuarios del motor Lingo.dev:

  • Nombre de variable: LINGODOTDEV_API_KEY
  • Valor de variable: tu clave API de proyecto desde lingo.dev/app

Añade el token de acceso de Bitbucket (para modo pull request)

Si planeas usar el modo de solicitud de extracción, crea un token de acceso:

  1. Ve a Configuración del repositorioTokens de accesoCrear token de acceso del repositorio
  2. Otorga estos alcances:
    • Lectura y escritura de repositorios
    • Lectura y escritura de solicitudes de extracción
  3. Añade el token como variable del repositorio:
    • Nombre de la variable: BB_TOKEN
    • Valor de la variable: Tu token de acceso de Bitbucket

Paso 2. Crear el flujo de trabajo

Crea o actualiza tu archivo bitbucket-pipelines.yml con esta configuración básica:

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

Esta configuración utiliza el pipe de Lingo.dev y ejecuta el motor de traducción automáticamente.

Permisos requeridos

Bitbucket Pipelines requiere acceso a las variables del repositorio y operaciones de git:

Variables del repositorio:

  • LINGODOTDEV_API_KEY — Requerido para usuarios de Lingo.dev Engine
  • OPENAI_API_KEY o ANTHROPIC_API_KEY — Requerido para usuarios de API LLM directa

Para el modo de solicitud de extracción:

  • BB_TOKEN — Requerido para crear y gestionar solicitudes de extracción

Alcances del token de acceso (cuando se usa el modo de solicitud de extracción):

  • Lectura y escritura de repositorios — Acceder y modificar el contenido del repositorio
  • Lectura y escritura de solicitudes de extracción — Crear y gestionar solicitudes de extracción

Estos permisos permiten que la integración lea tu contenido, genere traducciones y actualice tu repositorio con el contenido localizado.

Paso 3. Elegir tu modo de flujo de trabajo

La integración de Lingo.dev con Bitbucket admite dos modos operativos según los requisitos de revisión de código de tu equipo.

Modo de commit directo (predeterminado)

La integración realiza commits de las traducciones directamente en tu rama:

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

Este modo funciona mejor para:

  • Desarrolladores individuales o equipos pequeños
  • Ramas de funcionalidad que se revisarán antes de fusionarse
  • Proyectos donde las actualizaciones de traducción no requieren revisión separada

Modo de solicitud de extracción

La integración crea solicitudes de extracción para actualizaciones de traducción:

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

Configuración requerida para el modo de solicitud de extracción

Variables del repositorio: Tanto LINGODOTDEV_API_KEY como BB_TOKEN deben configurarse como variables del repositorio.

Requisitos del token de acceso: Tu BB_TOKEN debe incluir permisos de lectura y escritura tanto para repositorios como para solicitudes de extracción.

Nota: La variable BB_TOKEN es requerida al usar el modo de solicitud de extracción.

Este modo funciona mejor para:

  • Equipos con requisitos estrictos de revisión de código
  • Proyectos donde los cambios de traducción necesitan aprobación separada
  • Flujos de trabajo que requieren revisión explícita de todos los cambios

Paso 4. Escenarios de flujo de trabajo

La integración de Lingo.dev con Bitbucket se adapta a diferentes flujos de trabajo de desarrollo. Comprender estos escenarios te ayuda a elegir la configuración adecuada para tu equipo.

Escenario 1: Actualizaciones de rama de funcionalidad (commits directos)

Activador: Push a ramas de funcionalidad Acción: Realiza commits de actualizaciones de traducción directamente en la rama de funcionalidad

image:
  name: atlassian/default-image:2

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

Flujo: Cambios de contenido enviados a la rama de funcionalidad → La integración realiza commits de traducciones en la misma rama

Esto mantiene las actualizaciones de traducción dentro de la rama de funcionalidad, asegurando que las traducciones se revisen junto con los cambios originales.

Escenario 2: Solicitudes de extracción para actualizaciones (modo de solicitud de extracción)

Activador: Push a cualquier rama configurada Acción: Crea solicitud de extracción con actualizaciones de traducción

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"

Flujo: Cambios de contenido enviados a la rama → La integración crea solicitud de extracción con traducciones

Esto mantiene revisiones separadas para las actualizaciones de traducción.

Configuración avanzada

Personaliza el comportamiento de la integración usando variables adicionales:

Ejemplo con Lingo.dev Engine:

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"

**Ejemplo con API LLM sin procesar:

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"

Opciones de configuración:

  • LINGODOTDEV_API_KEY — Tu clave API de Lingo.dev Engine, si estás usando Lingo.dev Engine
  • OPENAI_API_KEY — Tu clave API de OpenAI, si estás usando la API LLM directamente
  • ANTHROPIC_API_KEY — Tu clave API de Anthropic, si estás usando la API LLM directamente
  • LINGODOTDEV_PULL_REQUEST — Crear pull request en lugar de commit directo (predeterminado: false)
  • LINGODOTDEV_PULL_REQUEST_TITLE — Título personalizado del pull request (predeterminado: feat: update translations via @lingodotdev)
  • LINGODOTDEV_COMMIT_MESSAGE — Mensaje de commit personalizado (predeterminado: feat: update translations via @lingodotdev)
  • LINGODOTDEV_WORKING_DIRECTORY — Ejecutar la integración en un subdirectorio (predeterminado: .)
  • ---INLINE-CODE-PLACEHOLDER-c7c40ad1ae846ea8c2f2fca69cc02dae5ee--- — Procesar commits realizados por esta integración (predeterminado: false)
  • BB_TOKEN — Token de acceso de Bitbucket (requerido para el modo pull request)