开始使用 CI/CD
在开始使用 CI/CD 功能之前,请确保:
- 一个你想使用 CI/CD 功能的项目
- 你至少拥有项目的
Maintainer
权限
CI/CD 处理过程
在开始使用 CI/CD 功能前,需要:
- 确保为项目配置了可以运行流水线任务的 runners,我们会提供一些可用的共享 runners,你可以直接开始使用
- 在你项目的根目录添加一个
.codechina-ci.yml
文件,并在其中配置好你的流水线任务
当你往项目仓库中推送文件的时候,runners 会运行你的流水线任务,运行的结果会显示在流水线中。
确保你有可用的 runners
runner 是运行 CI/CD 流水线任务的代理,建议你使用我们提供的共享 runners,你可以在项目设置 - CI/CD
中展开 Runners 查看目前可用的 runners。
你至少需要一个活跃的 runner,runner 旁边的绿色圆圈表示其是一个活跃的 runner,可用于处理你的流水线任务。
.codechina-ci.yml
文件
创建.codechina-ci.yml
是一个yaml
格式的文件,可用于配置 CI/CD 的特定指令。
在这个文件中,你可以定义:
- runner 执行流水线任务的结构和顺序
- runner 在遇到特定条件时的处理方式
假设你希望在提交到除默认分支之外的任何分支时运行一系列的测试,当在提交到默认分支的时候,除了运行相同的测试外,还希望发布你的应用程序。
所有这些都可以在.codechina-ci.yml
中进行配置。
你可以通过以下步骤创建一个.codechina-ci.yml
文件:
- 进入项目
- 在文件目录上方,选择要提交的分支,单击加号图标,然后选择新建文件
- 文件名命名为
.codechina-ci.yml
,模板类型也选择为.codechina-ci.yml
并选择相应的模板,或者你也可以将以下示例配置文件粘贴进去
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
test-job1:
stage: test
script:
- echo "This job tests something"
test-job2:
stage: test
script:
- echo "This job tests something, but takes more time than test-job1."
- echo "After the echo commands complete, it runs the sleep command for 20 seconds"
- echo "which simulates a test that runs 20 seconds longer than test-job1"
- sleep 20
deploy-prod:
stage: deploy
script:
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
$GITLAB_USER_LOGIN
和$CI_COMMIT_BRANCH
是在运行流水线任务时填充的预定义变量。
4. 单击提交变更
按钮
.codechina-ci.yml
小贴士
-
如果您希望 runner 使用 Docker 容器来运行流水线任务,在
.codechina-ci.yml
文件以包含对应的镜像名称即可:default: image: ruby:2.7.2
此命令告诉 runner 使用来自 Docker Hub 的 Ruby 镜像并在从该镜像生成的容器中运行流水线任务。
此过程不同于将应用程序构建为 Docker 容器。您的应用程序无需构建为 Docker 容器即可在 Docker 容器中运行 CI/CD 的流水线任务。
- 要验证您的
.codechina-ci.yml
文件,请使用每个项目中都可用的 CI Lint 工具。 - 您还可以使用 CI/CD 配置可视化来查看
.codechina-ci.yml
文件的图形表示 - 更多
.codechina-ci.yml
语法相关的内容,请参阅 该.codechina-ci.yml
语法说明。
查看流水线和流水线任务的状态
当你提交了代码变更后,流水线就会自动运行。可以通过以下方式要查看你的流水线:
- 跳转至
CI/CD > 流水线
你会看到一个具有 3个 stages 的 pipeline:
- 要查看流水线的可视化图形,你可以单击流水线的 ID
- 要查看流水线任务的详细信息,你可以单击流水线任务的名称,比如
deploy-prod
如果流水线任务的状态是 stuck
,请检查项目的 Runner 是否配置正确。