GitLab 不单单只是作为一个代码版本控制的仓库,很多场景下使用 GitLab 作为整合 CI 持续集成就 CD 持续发布的工作平台,那么就是 GitLab 的 CI Pipeline 功能了。

CI Pipeline

试想一下,如果开发人员只需要编写代码,而编译、打包、测试等等集成的事情以及将打包后的线上全部交付给机器自动化去完成,那对效率是不是有极大的提高呢。

什么是 CI (Continuous Integration)

持续集成是指开发人员会持续的将代码更改提交到代码仓库中,更改会触发编译、测试等作业证明此次提交的代码是否满足预期要求,已确保新提交代码可以对原有代码进行集成,已防止新提交的代码造成部署后应用出现问题。

什么是 CD (Continuous Delivery)

持续交付是指持续集成的进一步扩展,已经正常通过测试及验证代码的稳定性,下一步就是将代码部署在预发环境中,可以使用自动化的方式重复的进行频繁的交付,这可以避免因为人工配置错误等原因造成问题。

从一个流水线说起

GitLab 中通过 .gitlab-ci.yml 来定义Pipeline、Stage、Job,该文件存在与项目的根目录下,当有代码提交时,将自动化触发到该流水线的作业。

stages 代表阶段,例如流水线会包括编译、部署、测试等步骤。
Job 代表作业,例如在编译阶段的作业是处理依赖等。

该示例定义了 master 分支下提交代码时会触发到流水线的作业,分别会助兴 build、deploy 和 test,简单的通过输出回显代表所执行的作业。

stages:- build- deploy- testdefault:before_script:- echo 'run some command before'after_script:- echo 'run some command 'prod-build:stage: buildonly:- masterscript:- echo "run some dev build code"prod-deploy:stage: deployonly:- masterscript:- echo "run some prd deploy code"prod-test:stage: testonly:- masterscript:- echo "run some prd test code"

验证 .gitlab-ci.yml 语法是否正确

得到输出验证结果

GitLab Runner

由于当前 GitLab 服务中没有部署任何的 GitLab Runner,所以会见到该流水线作业是在 Pending 状态的。

GitLab Runner 部署

在这里也是通过 Docker 容器的形式去运行 GitLab Runner,并连接到 GitLab Server 中来。

创建 GitLab Runner

docker run -d --name gitlab-runner gitlab/gitlab-runner:v13.5.0

注册到 GitLab Server

docker exec -it gitlab-runner gitlab-ci-multi-runner register

注册时需要用到的 URL 及 Token 通过访问 Admin Area 下的 Runners 功能获取。

相关定义的流水线已经被 GitLab Runner 运行,并且每一个 Stage 都是成功的

Pipeline Schedule

可以通过计划该功能设置根据需要自动进行触发流水线作业,例如在有些场景下,团队的产品最少每天要进行一次持续集成,而这个作业由系统自动化触发。

可以按照 crontab 的形式进行定义作业的频率,并且指定所对应的分支。

GitLab CI Pipeline相关推荐

  1. 赛普拉斯天线_赛普拉斯在gitlab ci管道中设置了首次验收测试

    赛普拉斯天线 Late evening calls, reverted releases, lost revenue, and eventually fear of touching anything ...

  2. gitlab项目中启用或禁用 GitLab CI/CD Pipeline

    默认情况下,GitLab CI/CD 在新安装上会默认启用,要关闭的话,有两种方式: 需要在每个项目下单独关闭. 通过修改源安装和 Omnibus 安装中的设置.(未验证) 1.每个项目单独关闭 要在 ...

  3. GitLab CI流水线配置文件.gitlab-ci.yml详解(三)

    GitLab CI流水线配置文件.gitlab-ci.yml详解 - contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <con ...

  4. Gitlab CI更多内容学习(二)

    文章目录 1 CI含义 2.1 多平台统一发布 2.2 平台解耦单一发布 3. CI job按需触发 4. Gitlab CI/CD管道配置 5. Job和Runner 6. Gitlab CI预定义 ...

  5. Gitlab CI(一)

    Gitlab CI流程设计与思考 repo添加ci完整流程 新增Repo CI注册需要开发者提供的信息和我们这边需要反馈的信息. CI注册需要提供的信息: 1. Repo url 2. 需要注册哪些C ...

  6. 指定的网络文件夹目前是以其他用户名和密码进行映射的_使用 GitLab CI 与 Argo CD 进行 GitOps 实践

    在现在的云原生世界里面 GitOps 不断的被提及,这种持续交付的模式越来越受到了大家的青睐,我们前面也有文章详细讲解了 GitOps 的相关概念,在网上也可以找到很多关于它的资源,但是关于 GitO ...

  7. jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?

    十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...

  8. iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布

    一.Gitlab CI/CD 简介 ① GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或 ...

  9. GitLab CI/CD

    GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发: Continuous Integration (CI)  持续集成 Continuous Delivery ...

最新文章

  1. cocoahttpserver 载入本地html,利用CocoaHttpServer搭建手机本地服务器
  2. Linux环境进程间通信(二): 信号--转载
  3. 深入浅出设计模式原则之接口隔离原则(ISP)
  4. 【Java每日一题】20170309
  5. 15.IDA-查看XREF列表(Ctrl+x)
  6. Visualvm 远程测试 问题
  7. 基于Sanic的微服务基础架构
  8. 安卓添加滚轮代码_iPhone为什么都不会中病毒?安卓默默退出群聊
  9. sql查询前50条_您必须知道的前50条SQL查询
  10. Java中split函数的用法及使用示例
  11. Exchange2010中文版安装教程
  12. 【谷粒学院】项目总结
  13. 陈纪修 数学分析,上下册
  14. 追赶法 matlab编程,科学网—数值分析----三对角方程组的追赶法matlab程序 - 殷春武的博文...
  15. 解决Chrome谷歌浏览器Flash插件已被屏蔽
  16. 三四线城市的房地产泡沫率先崩盘?
  17. android基础知识1
  18. 论文:CenterNet: Keypoint Triplets for Object Detection 阅读笔记
  19. matlab-微分方程求解方法汇总
  20. Python学习十:网络编程

热门文章

  1. Matlab——Simulink输出的数据怎么利用plot函数绘图
  2. C++ 多态(动态多态)
  3. HTTP协议详解以及URL具体访问过程
  4. 《魔兽争霸3》战网命令详解
  5. 扔掉U盘:两步教你如何使用硬盘装系统(适用gpt磁盘)
  6. [MEM]综合能力考试-数学知识点
  7. 170虚拟号码的正则表达式
  8. Java期末考试程序设计—井字棋
  9. word标题段前断后设置都为6磅,标题段前无效
  10. 磁盘阵列柜 和存储有什么区别