GitLab CI/CD 入门
跟随此文档进行 GitLab CI/CD 入门。
在开始之前,请确保您拥有:
- 极狐GitLab 中您想使用 CI/CD 的项目。
- 项目的维护者或所有者角色。
CI/CD 流程概览
要使用 GitLab CI/CD:
- 确保您有可用的 runner 运行您的作业。 如果您没有 runner,需要为您的示例、项目或群组安装 GitLab Runner并注册 runner。SaaS 版提供 runner,如果您使用 SaaS 版,跳过此步骤。
-
在仓库的根目录下创建一个
.gitlab-ci.yml
文件。该文件是您定义 CI/CD 作业的地方。
当您将文件提交到仓库时,runner 会运行您的作业。 作业结果显示在流水线中。
确保您有可用的 runner
在极狐GitLab 中,runners 是运行 CI/CD 作业的代理。
您可能已经有可用于您的项目的 runner,包括共享 runner,它们可用于您的实例中的所有项目。
要查看可用的 runner:
- 转到 设置 > CI/CD 并展开 Runners。
只要您至少有一个有效的 runner,旁边有一个绿色圆圈,您就有一个 runner 可以处理您的作业。
如果 UI 中的 Runners 页面上没有列出任何 runner,您或管理员必须安装 GitLab Runner 和注册至少一名 runner。
如果您正在测试 CI/CD,您可以在本地机器上安装 GitLab Runner 并注册 runner。 当您的 CI/CD 作业运行时,它们会在您的本地机器上运行。
创建 .gitlab-ci.yml
文件
.gitlab-ci.yml
文件是一个 YAML 文件,您可以在其中配置 GitLab CI/CD 的特定指令。
在此文件中,您定义:
- runner 应执行的作业的结构和顺序。
- runner 在遇到特定条件时应做出的决定。
例如,您可能希望在提交到除默认分支之外的任何分支时运行一组测试。当您提交到默认分支时,您希望运行相同的套件,但还要发布您的应用程序。
所有这些都在 .gitlab-ci.yml
文件中定义。
创建一个 .gitlab-ci.yml
文件:
- 在左侧边栏上,选择 项目信息 > 详细信息。
-
在文件列表上方,选择要提交的分支,点击加号图标,然后选择 新建文件:
-
对于 文件名称,输入
.gitlab-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." environment: production
$GITLAB_USER_LOGIN
和$CI_COMMIT_BRANCH
是在作业运行时填充的预定义变量。 - 点击 提交变更。
提交后,流水线开始。
.gitlab-ci.yml
tips
- 创建第一个
.gitlab-ci.yml
文件后,使用流水线编辑器 对文件进行所有未来的编辑。使用流水线编辑器,您可以:- 使用自动语法突出显示和验证来编辑流水线配置。
- 查看 CI/CD 配置可视化,是您的
.gitlab-ci.yml
文件的图形化表示。
-
如果您希望 runner 使用 Docker 容器运行作业,请编辑
.gitlab-ci.yml
文件以包含镜像名称:default: image: ruby:2.7.5
此命令告诉 runner 使用来自 Docker Hub 的 Ruby 镜像并在从该镜像生成的容器中运行作业。
此过程不同于将应用程序构建为 Docker 容器。您的应用程序无需构建为 Docker 容器即可在 Docker 容器中运行 CI/CD 作业。
- 每个作业都包含脚本和阶段:
-
default
关键字用于自定义默认值,例如before_script
和after_script
。 -
stage
描述了作业的顺序执行。 只要有可用的 runner,单个阶段中的作业就会并行运行。 - 使用 Directed Acyclic Graphs (DAG) 关键字以乱序运行作业。
-
- 您可以设置其他配置来自定义您的作业和阶段的执行方式:
- 有关完整的
.gitlab-ci.yml
语法,请参阅完整的.gitlab-ci.yml
参考主题。
查看流水线和作业的状态
当您提交更改时,流水线启动。
要查看您的流水线:
如果作业状态为 stuck
,请检查以确保为项目正确配置了 runner。