开始使用GitLab CI/CD
GitLab提供了一个持续集成服务。如果你添加一个.gitlab-ci.yml
文件到存储库的根目录,并配置您的GitLab项目使用跑步者,然后每次提交或推送都会触发CI管道。
的.gitlab-ci.yml
文件告诉GitLab运行程序该做什么。默认情况下,它运行一个包含三个参数的管道阶段:构建
,测试
,部署
。你不需要使用所有三个阶段;没有作业的阶段被简单地忽略。
如果一切运行正常(没有非零返回值),您将得到一个与提交相关的漂亮的绿色复选标记。这使得在查看代码之前就可以很容易地看到提交是否导致了任何测试失败。
大多数项目都使用GitLab的CI服务来运行测试套件,以便开发人员在出现问题时立即得到反馈。
使用持续交付和持续部署来自动将测试过的代码部署到登台和生产环境,这是一个日益增长的趋势。
因此,简单地说,拥有一个工作CI所需的步骤可以总结为:
- 添加
.gitlab-ci.yml
到存储库的根目录 - 配置跑步机
从那时起,每次推送到Git存储库时,Runner都会自动启动管道,管道将出现在项目的下面管道页面。
本指南假设您:
- 有一个工作的GitLab实例版本8.0+r或正在使用GitLab.com
- 在GitLab中有一个项目,你想使用CI吗
让我们将其分解并解决GitLab CI难题。
.gitlab-ci.yml
文件
创建一个在创建之前.gitlab-ci.yml
让我们首先简要解释一下这是怎么回事。
.gitlab-ci.yml
是什么的.gitlab-ci.yml
文件用于配置CI对项目执行的操作。它位于存储库的根目录中。
在任何推送到存储库时,GitLab都会查找.gitlab-ci.yml
文件和启动作业跑步者根据文件的内容,对于该提交。
因为.gitlab-ci.yml
旧版本仍然可以成功构建,分支可以很容易地使用CI,分支可以有不同的管道和作业,并且您有一个用于CI的真实来源。你可以阅读更多关于我们使用的原因.gitlab-ci.yml
在我们的博客中。
.gitlab-ci.yml
文件
创建一个简单的注意:
.gitlab-ci.yml
是一个YAML文件,所以你必须特别注意缩进。总是使用空格,而不是制表符。
您需要创建一个名为.gitlab-ci.yml
在存储库的根目录中。下面是一个Ruby on Rails项目的例子。
before_script:-Apt-get update -qq && Apt-get install -y -qq sqlite3 libsqlite3-dev nodejs-ruby - v-这红宝石-Gem安装打包器——no-ri——no-rdoc-Bundle install——jobs $(nproc)" ${国旗[@]}"rspec:脚本:-Bundle执行rubocop:脚本:-Bundle exexrubocop
这是最简单的配置,可以适用于大多数Ruby应用程序:
- 定义两个作业
rspec
和rubocop
(名称是任意的),包含要执行的不同命令。 - 在每个作业之前,由
before_script
执行。
的.gitlab-ci.yml
文件定义了作业集,并限制了它们应该如何运行以及何时运行。作业被定义为具有名称(在我们的示例中为)的顶级元素rspec
和rubocop
),并且总是必须包含脚本
关键字。作业用于创建作业,然后由跑步者并在Runner的环境中执行。
重要的是,每个作业都是彼此独立运行的。
如果您想检查是否.gitlab-ci.yml
如果你的项目是有效的,在页面下面有一个Lint工具/ ci /线头
项目名称空间的。你也可以找到一个“CI Lint”按钮来进入这个页面CI/CD《管道》和管道作业在你的项目中。
要了解更多信息和完整的.gitlab-ci.yml
语法,请阅读.gitlab-ci.yml上的参考文档。
.gitlab-ci.yml
对GitLab
推一旦创建完成.gitlab-ci.yml
,您应该将其添加到Git存储库并将其推送到GitLab。
Git添加。gitlab-ci.ymlgit提交- m“添加.gitlab-ci.yml”Git push origin master
现在如果你去管道页,您将看到管道正在挂起。
注意:注意:如果你有镜像存储库,GitLab从其中提取,您可能需要在项目中启用管道触发设置>存储库>从远程存储库拉取>触发镜像更新管道。
你也可以去提交页面,注意提交SHA旁边的小暂停图标。
单击它,您将被定向到该特定提交的作业页面。
注意,有一个挂起的作业,它以我们写入的内容命名.gitlab-ci.yml
。"卡住"表示还没有为该作业配置Runner。
下一步是配置Runner,以便它选择挂起的作业。
配置Runner
在GitLab中,runner运行在中定义的作业.gitlab-ci.yml
。Runner可以是虚拟机、VPS、裸机、docker容器,甚至是容器集群。GitLab和跑步者通过API进行通信,所以唯一的要求是跑步者的机器有互联网访问。
Runner可以特定于某个项目,也可以服务于GitLab中的多个项目。如果它服务于所有项目,它被称为a共享的跑步者。
找到更多关于不同跑步者的信息跑步者文档。
您可以查看是否有任何runner被分配到您的项目中设置intelligent /CD。设置一个跑步者是简单和直接的。GitLab支持的官方Runner是用Go编写的,它的文档可以在https://docs.gitlab.com/runner/。
为了拥有一个功能性的Runner,你需要遵循两个步骤:
按照上面的链接设置您自己的Runner或使用下一节中描述的共享Runner。
一旦设置了Runner,您应该在项目的Runner页面上看到它,如下所示设置intelligent /CD。
共享的跑步者
如果你使用GitLab.com你可以使用共享的跑步者由GitLab Inc.提供
这些是在GitLab的基础设施上运行的特殊虚拟机,可以构建任何项目。
要启用共享的跑步者你得去你的项目设置intelligent /CD并点击启用共享运行程序。
查看管道和作业的状态
成功配置Runner后,您应该看到上次提交更改的状态等待要么运行,成功或失败的。
可以查看所有管道管道页在您的项目。
也可以查看所有作业,方法是到管道作业页面。
通过单击作业的状态,您将能够看到该作业的日志。这对于诊断为什么工作失败或与你预期的不同是很重要的。
您还可以在GitLab的各个页面中查看任何提交的状态,例如提交和合并请求。
例子
参观例子的自述查看使用GitLab CI与各种语言的示例列表。