资讯专栏INFORMATION COLUMN

Gitlab CI/CD执行流程

社区管理员 / 772人阅读

一、什么是CI/CD

  • CI 持续集成

  • CD 持续交付

CI/CD就是在开发阶段,通过自动化发布,来频繁部署应用的一种方式

二、为什么要配置CI/CD

想象一下,一个项目的发布如果手动部署,需要的操作有:

  • 单元测试

  • 打包文件

  • 上传服务器

  • 等等

如果每个过程都需要手动执行,每次都要保证不出错,这个已经很繁琐了。

而现在大的前端项目多达10+的人开发,而且人员流动大。

如果每个人都这么发布,快速迭代就容易出错。

这时候就需要CI/CD了,

CI/CD提供了自动化部署、代码质量检查、版本管理、快速回退等的能力

三、准备工作

  1. 前端项目:用来部署前端业务的代码

  2. Gitlab: 8.0.0版本以上支持CI/CD

  3. Gitlab runner:

    • 理解为一个应用,可以通过Api和Gitlab交互,需要提前部署。

    • .gitlab-ci.yml配置的一个个CI/CD任务,需要Runner执行,然后将结果反馈Gitlab实例。

    • 这些任务可以配置,比如构建镜像,代码检测,部署发布...等等。

  4. Docker仓库:用来保存构建的镜像版本,方便随时回退

  5. K8S集群:用来部署项目,多集群部署可以容灾

四、具体的执行流程

1、图示流程

配置Gitlab的CI/CD发布,要了解这个发布过程

image.png

2、配置文件

项目中需要配置

  • .gitlab-ci.yml

  • Dockerfile

  • gitlab runner

  • production.yml

3、具体执行

(1)开发代码完毕

开发完毕后,提交代码到master,并推送远程仓库,执行下面语句,将触发CICD

git tag v1.0.0 && git push origin v1.0.0  复制代码

注意,触发CI/CD有多种方式,包括:git tag,合并分支,调用Api,或者Gitlab页面操作,需要配置.gitlab-ci.yml文件

(2)触发CICD

image.png

如图所示,Gitlab将会启动一个pipeline,这个pipeline包括了.gitlab-ci.yml文件定义的一系列任务,包括自定义的并行和串行任务。

具体执行任务是在Gitlab Runner中,Runner要提前配置好。 如下图i6PHy8wy就是一个共享的runner:

image.png

(3)构建并上传镜像到自建的docker仓库

CI/CD的过程中可以构建一个用来部署的docker镜像,然后根据[product].yml(k8s)的配置文件,部署k8s。

我们可以看到,整个过程中,我们仅仅执行命令git tag,然后后面的一些任务,如静态检查,单元测试,打包,部署都不需要操心,直到完成,完成也可以配置邮件或微信提醒,有问题可以回退版本。这样就避免了人为的操作失误。

五、Gitlab Runner的安装和注册

1、Gitlab Runner 是什么

由上面的流程,我们可以看到在触发CI/CD后,必须要有一个可以执行pipeline的runner,所以就先来部署gitlab runner。

Runners are processes that pick up and execute CI/CD jobs for GitLab

意思就是runner是一个可以跑CI/CD任务的一系列进程。

gitlab-runner是一个执行Gitlab CI/CD的应用,先注册gitlab-runner,然后配置的.gitlab-ci.yml的任务和指令就可以成功执行,然后再通过api将结果反馈Gitlab。

2、Gitlab Runner的分类

  • 共享runner 可以让当前gitlab仓库的所有项目共用

  • 组runner 可以让组中的项目共用,在组cicd中注册

  • 项目runner 仅可以在当前项目使用,在当前项目下配置

3、安装

这三类runner的安装一样,支持安装在本地,虚拟机,云服务器,docker,k8s等。官方安装说明

这里我们选择安装到一台linux云服务器,文档

(1)根据不同的服务器版本,下载对应的gitlab-runner

# Linux x86-64 sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64" # Linux x86 sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386" # Linux arm sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm" # Linux arm64 sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64" # Linux s390x sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-s390x" 复制代码

(2) 给gitlab-runner权限

sudo chmod +x /usr/local/bin/gitlab-runner 复制代码

(3) 创建一个gitlab-ci的用户,之后在CICD都会在这个用户下进行

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash 复制代码

(4) 安装并且启动gitlab-runner

sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start 复制代码

4、注册

(1)执行gitlab-runner命令

sudo gitlab-runner register 复制代码

然后根据提示,依次输入下图中1、2的url和token,还有一个tag,是用来和.gitlab-ci.yml联动的,可以自行定义,像下图的test。

注册需要在setting/cicd页面,打开runner模块,拿到图中的urlh和token

  • 项目的runner就到项目下的setting/cicd,

  • 组的runner就到组的setting/cicd

  • 共享的runner就去管理员权限下拿

这里安装了项目的runner,安装好后就可以看到如图中3所示的runner

image.png 到这里,就安装好了,然后接着配置.gitlab-ci.yml文件,让CICD跑起来。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127953.html

相关文章

  • Kubernetes如何加速UCloud内部代码部署的CI/CD流程

    摘要:内部长期使用来管理代码。审核通过并且成功后,触发静态测试单元测试镜像构建镜像部署集成测试等测试通过后,创建一个从到的,由负责人进行审核。从图中我们可以看到,部分是一个单元测试,预发布部署,集成测试,,提交代码的循环过程。UCloud内部长期使用 Gitlab 来管理代码。虽然Gitlab作为一套开源平台已很优秀,但我们对于其能为CI/CD提供的敏捷性并不十分满意,内部实践中的代码发布周期仍需...

    gougoujiang 评论0 收藏0
  • GitLab CI/CD 在 Node.js 项目中的实践

    摘要:近期在按照业务划分项目时,我们组被分了好多的项目过来,大量的是基于的,也是我们组持续在使用的语言。部署环境强依赖本地,因为需要在本地建立仓库的临时目录,并经过多次的方式完成部署上线的操作。 近期在按照业务划分项目时,我们组被分了好多的项目过来,大量的是基于 Node.js 的,也是我们组持续在使用的语言。 现有流程中的一些问题 在维护多个项目的时候,会暴露出一些问题: 如何有效的使用...

    Profeel 评论0 收藏0
  • Rancher Pipeline发布:开源、极简、强大的CI/CD

    摘要:来自硅谷的企业级容器管理平台提供商今日正式发布与企业级容器管理平台集成的,极简的操作体验,强大的功能整合,完全开源,助力在企业的真正落地使用。 来自硅谷的企业级容器管理平台提供商Rancher Labs今日正式发布与Rancher企业级容器管理平台集成的Rancher Pipeline,极简的操作体验,强大的功能整合,完全开源,助力CI/CD在企业的真正落地使用。 云计算技术的广泛采用...

    lewif 评论0 收藏0
  • GitLab Auto DevOps功能与Kubernetes集成教程

    摘要:从开始,部署管理的集群时,默认情况下会启用授权群集端点功能。我们将首先在中创建一个新项目,该项目将使用功能与我们的集群集成。完成后单击创建项目。这不仅意味着已被设为默认值,还能够触发构建。例如,负载均衡选项卡显示已部署的以及创建的主机名。 介 绍 在这篇文章中,我们将介绍如何将GitLab的Auto DevOps功能与Rancher管理的Kubernetes集群连接起来,利用Ranch...

    GraphQuery 评论0 收藏0
  • 两大阐释、四大流程,拿下CI/CD

    摘要:使用的公司能大大增加他们的应用程序发行频率。然而,这是战略需求,将会提高交付速度,减少错误。我们的建议是,最好进入流程定义,以实现零接触持续部署的总体目标。 在最好的时候创建用户喜欢的高质量应用程序并不是件容易的事情。更何况,要怎样做才能更快地创建用户喜欢的高质量应用程序并且能够不断改进它们呢?这就是需要引入持续集成和持续交付(CI / CD)的地方。 持续集成(CI) 什么是持续集成...

    CoderDock 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<