GitLab CI/CD

使用 GitLab CI/CD 和 Lingo.dev CI/CD 的 AI 翻译

什么是 GitLab CI/CD?

GitLab CI/CD 是内置于 GitLab 的持续集成和部署平台。它允许用户在 YAML 文件中定义流水线,以构建、测试和部署代码,或自动化由代码库事件触发的任务。

什么是 Lingo.dev CI/CD?

Lingo.dev CI/CD 是一个基于 AI 的工具,用于在 CI/CD 中本地化应用程序和内容,确保翻译始终保持最新。它基于 Lingo.dev CLI 构建,并通过 ci 命令使用:

npx lingo.dev@latest ci --help

关于本指南

本指南解释了如何将 Lingo.dev CI/CD 与 GitLab CI/CD 和 Lingo.dev Engine 配合使用。

第 1 步:设置 Lingo.dev CLI

首先,按照 Lingo.dev CLI快速入门

完成后,您应该拥有:

  • 一个 Lingo.dev 的 API 密钥
  • 一个配置翻译流水线行为的 i18n.json 文件
  • 使用 npx lingo.dev@latest run 翻译内容的能力

第 2 步:获取访问令牌

在 GitLab CI/CD 中,某些流水线操作需要 访问令牌

访问令牌有两种类型:

两种令牌都可以使用,但只有 GitLab 的非付费用户可以使用个人访问令牌。

个人访问令牌

  1. 在左侧边栏中,选择您的头像。

  2. 选择 编辑个人资料

  3. 在左侧边栏中,选择 访问令牌

  4. 选择 添加新令牌

  5. 令牌名称 中,为令牌输入一个名称(例如,“Lingo.dev”)。

  6. 启用以下权限范围:

    • api
    • read_repository
    • write_repository
  7. 选择 创建个人访问令牌

项目访问令牌

  1. 在 GitLab 中导航到一个项目。

  2. 选择 设置 > 访问令牌

  3. 选择 添加新令牌

  4. 令牌名称 中输入一个名称。

  5. 为令牌选择一个角色。

  6. 启用以下范围:

    • api
    • read_repository
    • write_repository
  7. 选择 创建项目访问令牌

第 2 步:配置 CI/CD 变量

在 GitLab 中,CI/CD 变量 允许流水线访问敏感值。要在 GitLab CI/CD 中使用 Lingo.dev,必须将 Lingo.dev API 密钥和 GitLab 访问令牌作为变量提供。

警告: 默认情况下,CI/CD 变量仅在受保护分支上可用。如果您未使用受保护分支,请在创建变量时禁用 保护变量 选项。

Lingo.dev API 密钥

  1. 导航到 设置 > CI/CD
  2. 展开 变量 部分。
  3. 点击 添加变量
  4. 字段中输入 LINGODOTDEV_API_KEY
  5. 字段中输入一个 Lingo.dev API 密钥。
  6. 选择 可见性 > 掩码
  7. 点击 添加变量

GitLab 访问令牌

  1. 导航到 设置 > CI/CD
  2. 展开 变量 部分。
  3. 点击 添加变量
  4. 字段中输入 GL_TOKEN
  5. 字段中输入一个 GitLab 访问令牌。
  6. 选择 可见性 > 掩码
  7. 点击 添加变量

第 3 步:选择一个工作流

您可以通过不同的方式设置 Lingo.dev CI/CD 来支持不同的工作流。以下是我们推荐(并提供示例)的工作流:

  • 当内容合并到 main 时,将翻译提交到 main
  • 当内容合并到 main 时,从 main 创建一个合并请求
  • 当内容合并到功能分支时,将翻译提交到该分支
  • 当内容合并到功能分支时,从该分支创建一个合并请求

但没有“最佳”工作流。每种工作流都有其权衡。如果您不确定从哪里开始,我们建议从第一个选项开始。这是最简单、最隐形的工作流。

第 4 步:设置流水线

  1. 在仓库根目录中,创建一个 .gitlab-ci.yml 文件:

    touch .gitlab-ci.yml
    
  2. 将其中一个示例流水线复制到该文件中。

  3. 提交并推送更改到 main 分支:

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

(可选)第 5 步:自定义流水线

Lingo.dev CI/CD 提供了默认值,在大多数情况下无需自定义。但是,您可以通过 ci 命令的 CLI 参数覆盖这些默认值。

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

要查看所有可用选项,请参阅 CLI 命令

示例流水线

提交到 main

当内容合并到 main 时,将翻译提交到 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

从 main 创建合并请求

当内容合并到 main 时,从 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

提交到功能分支

当内容合并到功能分支时,将翻译提交到该分支。

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

从功能分支创建合并请求

当内容合并到功能分支时,从该分支创建一个合并请求。

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