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
-
选择 创建个人访问令牌。
项目访问令牌
-
在 GitLab 中导航到一个项目。
-
选择 设置 > 访问令牌。
-
选择 添加新令牌。
-
在 令牌名称 中输入一个名称。
-
为令牌选择一个角色。
-
启用以下范围:
apiread_repositorywrite_repository
-
选择 创建项目访问令牌。
第 2 步:配置 CI/CD 变量
在 GitLab 中,CI/CD 变量 允许流水线访问敏感值。要在 GitLab CI/CD 中使用 Lingo.dev,必须将 Lingo.dev API 密钥和 GitLab 访问令牌作为变量提供。
警告: 默认情况下,CI/CD 变量仅在受保护分支上可用。如果您未使用受保护分支,请在创建变量时禁用 保护变量 选项。
Lingo.dev API 密钥
- 导航到 设置 > CI/CD。
- 展开 变量 部分。
- 点击 添加变量。
- 在 键 字段中输入
LINGODOTDEV_API_KEY。 - 在 值 字段中输入一个 Lingo.dev API 密钥。
- 选择 可见性 > 掩码。
- 点击 添加变量。
GitLab 访问令牌
- 导航到 设置 > CI/CD。
- 展开 变量 部分。
- 点击 添加变量。
- 在 键 字段中输入
GL_TOKEN。 - 在 值 字段中输入一个 GitLab 访问令牌。
- 选择 可见性 > 掩码。
- 点击 添加变量。
第 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 时,将翻译提交到 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