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 免费用户开放。
个人访问令牌
-
在左侧边栏选择您的头像。
-
选择 编辑资料。
-
在左侧边栏选择 访问令牌。
-
选择 添加新令牌。
-
在 令牌名称 中输入一个名称(如 "Lingo.dev")。
-
启用以下权限范围。
apiread_repositorywrite_repository
-
选择 Create personal access token。
项目访问令牌
-
进入 GitLab 的某个项目。
-
选择 Settings > Access tokens。
-
选择 Add new token。
-
在 Token name 中输入名称。
-
为该令牌选择一个角色。
-
启用以下权限范围。
apiread_repositorywrite_repository
-
选择 Create project access token。
步骤 2. 配置 CI/CD 变量
在 GitLab 中,CI/CD 变量 允许流水线访问敏感值。要在 GitLab CI/CD 中使用 Lingo.dev,必须将 Lingo.dev API 密钥和 GitLab 访问令牌都作为变量提供。
警告: 默认情况下,CI/CD 变量仅在 受保护分支 上可用。如果你未使用受保护分支,请在创建变量时关闭 Protect variable 选项。
Lingo.dev API 密钥
- 进入 Settings > CI/CD。
- 展开 Variables 部分。
- 点击 Add variable。
- 在 Key 字段中输入
LINGODOTDEV_API_KEY。 - 在 Value 字段中输入 Lingo.dev API 密钥。
- 选择 Visibility > Masked。
- 点击 Add variable。
GitLab 访问令牌
- 进入 Settings > CI/CD。
- 展开 Variables 部分。
- 点击 Add variable。
- 在 Key 字段中输入
GL_TOKEN。 - 在 Value 字段中输入 GitLab 访问令牌。
- 选择 Visibility > Masked。
- 点击 Add variable。
步骤 3. 选择工作流
你可以通过不同方式设置 Lingo.dev CI/CD,以支持不同的工作流。以下是我们推荐(并提供示例)的一些工作流:
- 当内容合并到
main时,将翻译提交到main - 当内容合并到
main时,从main创建合并请求 - 当内容合并到功能分支时,将翻译提交到该分支
- 当内容合并到功能分支时,从该分支创建合并请求
但没有“最佳”工作流。每种方式都有其权衡。如果你不确定从哪里开始,我们建议先选择第一个选项。这是最简单、最无感的工作流。
步骤 4. 设置流水线
-
在仓库根目录下创建一个
.gitlab-ci.yml文件:touch .gitlab-ci.yml -
将其中一个示例流水线复制到该文件中。
-
将更改提交并推送到
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。
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 创建一个合并请求。
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