带你深入了解 GitLab CI/CD 原理及流程

点击上方“民工哥技术之路”,选择“设为星标”

回复“1024”获取独家整理的学习资料!

1.2. 基本 CI/CD 工作流程

一旦你将提交推送到远程仓库的分支上,那么你为该项目设置的CI/CD管道将会被触发。GitLab CI/CD 通过这样做:

  • 运行自动化脚本(串行或并行) 代码Review并获得批准

    • 构建并测试你的应用

    • 就像在你本机中看到的那样,使用Review Apps预览每个合并请求的更改

  • 代码Review并获得批准

  • 合并feature分支到默认分支,同时自动将此次更改部署到生产环境

  • 如果出现问题,可以轻松回滚

  • 通过GitLab UI所有的步骤都是可视化的

    • 通过持续集成自动构建和测试你的应用程序

    • 使用GitLab代码质量(GitLab Code Quality)分析你的源代码质量

    • 通过浏览器性能测试(Browser Performance Testing)确定代码更改对性能的影响

    • 执行一系列测试,比如Container Scanning , Dependency Scanning , JUnit tests

    • 用Review Apps部署更改,以预览每个分支上的应用程序更改

    2.Package

    • 用Container Registry存储Docker镜像

    • 用NPM Registry存储NPM包

    • 用Maven Repository存储Maven artifacts

    • 用Conan Repository存储Conan包

    3.Release

    • 持续部署,自动将你的应用程序部署到生产环境

    • 持续交付,手动点击以将你的应用程序部署到生产环境

    • 用GitLab Pages部署静态 站

    • 仅将功能部署到一个Pod上,并让一定比例的用户群通过Canary Deployments访问临时部署的功能(PS:即灰度发布)

    • 在Feature Flags之后部署功能

    • 用GitLab Releases将发布说明添加到任意Git tag

    • 使用Deploy Boards查看在Kubernetes上运行的每个CI环境的当前运行状况和状态

    • 使用Auto Deploy将应用程序部署到Kubernetes集群中的生产环境

    使用GitLab CI/CD,还可以:

    • 通过Auto DevOps轻松设置应用的整个生命周期

    • 将应用程序部署到不同的环境

    • 安装你自己的GitLab Runner

    • Schedule pipelines

    • 使用安全测试 告(Security Test reports)检查应用程序漏洞

    2. GitLab CI/CD 快速开始

    .gitlab-ci.yml文件告诉GitLab Runner要做什么。一个简单的管道通常包括三个阶段:build、test、deploy

    管道在 CI/CD > Pipelines 页面

    2.1. 创建一个 .gitlab-ci.yml 文件

    通过配置.gitlab-ci.yml文件来告诉CI要对你的项目做什么。它位于仓库的根目录下。

    仓库一旦收到任何推送,GitLab将立即查找.gitlab-ci.yml文件,并根据文件的内容在Runner上启动作业。

    下面是一个Ruby项目配置例子:

    上面的例子中,定义里两个作业,分别是 rspec 和 rubocop,在每个作业开始执行前,要先执行before_script下的命令

    2.2. 推送 .gitlab-ci.yml 到 GitLab

    2.3. 配置一个Runner

    在GitLab中,Runner运行你定义在.gitlab-ci.yml中的作业(job)

    一个Runner可以是一个虚拟机、物理机、docker容器,或者一个容器集群

    GitLab与Runner之间通过API进行通信,因此只需要Runner所在的机器有 络并且可以访问GitLab服务器即可

    你可以去 Settings ? CI/CD 看是否已经有Runner关联到你的项目,设置Runner简单又直接

    为了查看所有jobs,你可以去 Pipelines ? Jobs 页面

    回顾一下:

    • 1、首先,定义.gitlab-ci.yml文件。在这个文件中就定义了要执行的job和命令

    • 2、接着,将文件推送至远程仓库

    • 3、最后,配置Runner,用于运行job

    3. Auto DevOps

    Auto DevOps 提供了预定义的CI/CD配置,使你可以自动检测,构建,测试,部署和监视应用程序。借助CI/CD最佳实践和工具,Auto DevOps旨在简化成熟和现代软件开发生命周期的设置和执行。

    借助Auto DevOps,软件开发过程的设置变得更加容易,因为每个项目都可以使用最少的配置来完成从验证到监视的完整工作流程。只需推送你的代码,GitLab就会处理其他所有事情。这使得启动新项目更加容易,并使整个公司的应用程序设置方式保持一致。

    下面这个例子展示了如何使用Auto DevOps将GitLab.com上托管的项目部署到Google Kubernetes Engine

    示例中会使用GitLab原生的Kubernetes集成,因此不需要再单独手动创建Kubernetes集群

    本例将创建并部署一个从GitLab模板创建的应用

    3.1. 从GitLab模板创建项目

    在创建Kubernetes集群并将其连接到GitLab项目之前,你需要一个Google Cloud Platform帐户

    下面使用GitLab的项目模板来创建一个新项目

    3.2. 从GitLab模板创建Kubernetes集群

    点击 Add Kubernetes cluster 按钮,或者 Operations > Kubernetes

    3.3. 启用Auto DevOps (可选)

    Auto DevOps 默认是启用的。

    导航栏 Settings > CI/CD > Auto DevOps

    勾选 Default to Auto DevOps pipeline

    最后选择部署策略

    3.4. 部署应用

    到目前为止,你应该看到管道正在运行,但是它到底在运行什么呢/p>

    管道内部分为4个阶段,我们可以查看每个阶段有几个作业在运行,如下图:

    构建 -> 测试 -> 部署 -> 性能测试

    在Environments中,可以看到部署的应用的详细信息。在最右边有三个按钮,我们依次来看一下:

    第一个图标将打开在生产环境中部署的应用程序的URL。这是一个非常简单的页面,但重要的是它可以正常工作!

    紧挨着第二个是一个带小图像的图标,Prometheus将在其中收集有关Kubernetes集群以及应用程序如何影响它的数据(在内存/ CPU使用率,延迟等方面)

    推荐阅读 点击标题可跳转

    少年!用好这把瑞士军刀,从此 络故障诊断不用愁!

    CentOS 下 MySQL 8.0 安装部署,超详细!

    CentOS 搭建 K8S,一次性成功,收藏了!

    牛逼!白帽子们把色情版”微信”的底裤扒了个底朝天…..

    Gitlab 利用 Webhook+jenkins 实现自动构建与部署

    Iptables 最佳实践 !

    一文彻底了解 CDN 加速原理

    超全的数据库建表/SQL/索引规范,适合贴在工位上!

    MySQL 5.7 vs 8.0,哪个性能更牛br>

    推荐 11 个极易上手的 Docker 实践项目

    文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92342 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月5日
下一篇 2020年10月5日

相关推荐