GitLab-Runner,关于DevOps的新实践

GitLab-Runner,关于DevOps的新实践

Introduction

通常个人、一些小公司的需求不够复杂,要求不高的服务会直接将服务起在服务器上,但是当公司发展到一定程度,各种需要也越来越多样化,那么我们需要更专业的方法来管理代码和代码的集成、构建。

**Code Management **

我们现在采用的是GitLab通过分组和角色的权限来管理我们内部项目代码。

CI/CD

Continuous Integration is the practice of merging all the code that is being produced by developers. The merging usually takes place several times a day in a shared repository. From within the repository, or production environment, building and automated testing are carried out that ensure no integration issues and the early identification of any problems.

持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

我理解的集成是:代码合并–>依赖检查–>编译–>测试–>发布,集成的工作,以前是由人工完成的,由于业务需求复杂性,公司规模和多人合作等因素,为了加快开发效率,有很多聪明的人想到将集成这个工作自动化,将这个工作交由代码、脚本、工具链等来自动完成,这就是持续集成的由来**。**

持续集成的好处:

  • 在开发人员思考之前尽早的先发现问题。
  • 减少集成环节人工手动出现的问题,即使哪个环节出现问题,抛出的问题环节也更容易被发现。
  • 避免繁重的集成工作,让团队更自信敏捷快速地开发。

在这里插入图片描述

在这里插入图片描述

Define

GitLab CI/CD就是一套配合GitLab使用的持续集成系统,GitLab8.0以后的版本是默认集成了GitLab CI/CD并且默认启用的。

Why

这里需要谈到我们以前使用过的Jenkins,也属于GitLab CI/CD里的工具链,但是这这次新环境的搭建中,我们舍弃了使用Jenkins,而采用GitLab-Runner。

原因有如下几点:

  • GitLab CI/CD已经集成进GitLab服务器中,在使用的时候只需要安装配置GitLab-Runner即可。
  • GitLab-Runner配置简单,很容易与GitLab集成。当新建一个项目的时候,不再需要配置项目的webhook回调地址也不需要在Jenkins编写这个项目的编译配置脚本和部署脚本,只需在工程中配置"gitlab-ci.yml"文件,就可以让这个工程可以进行编译和部署。
  • GitLab-Runner没有web页面,但编译/部署的过程直接就在GitLab中可以看到,不需要像Jenkins额外再进入一个web页面去控制台查看编译/部署结果。
  • 集成的"gitlab-ci.yml"文件在开发阶段就可以由开发人员自己编写确立,大大降低了运维的压力和也减少了后期生产上线的额外步骤,我们一直在提倡DevOps敏捷开发,肯定是采用最便捷的开发方式,所以推荐GitLab CI/CD。
  • GitLab CI/CD是开源GitLab社区版和专有GitLab企业版的一部分,具有出色的用户体验,可以在单独的节点上分布式运行,也可以根据需要添加任意数量的节点,可扩展性好

Details

接下来详细说说"gitlab-ci.yml"搭配GitLab-Runner的详细说明。
在这里插入图片描述

Stages

Stages 表示构建阶段,一般是有3个stages:build, test, deploy。我们可以在一次 Pipeline 中自定义多个 Stages,例如加一个镜像推送的Stages,名字可以自己定义为push_image,这些 Stages 会有以下特点:

  • 所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始。
  • 只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功。
  • 如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败。

Jobs

Jobs 表示构建工作,表示某个 Stage 里面执行的工作。我们可以在 Stages 里面定义多个 Jobs,这些 Jobs 会有以下特点:

  • 相同 Stage 中的 Jobs 会并行执行。
  • 相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功。
  • 如果任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败。
  • 任务中必须得有script部分。

.gitlab-ci.yml

.gitlab-ci.yml 用来配置 CI 用你的项目中做哪些操作,这个文件位于仓库的根目录。

当有新内容push到仓库,或者有代码合并后,GitLab会查找是否有.gitlab-ci.yml文件,如果文件存在,配好的Runners将会根据该文件的内容开始build本次commit。

.gitlab-ci.yml 使用YAML语法, 你需要格外注意缩进格式,要用空格来缩进,不能用tabs来缩进。

Example

# 定义 stages,任务将按此顺序执行。
stages:
- build
- test
- deploy

# 定义 job(任务)
job_one:
stage: test
tags:
- XX #只有标签为XX的runner才会执行这个任务
only:
- dev #只有dev分支提交代码才会执行这个任务,也可以是分支名称或触发器名称
- /^dev.*$/ #正则表达式,只有dev-开头的分支才会执行
script:
- echo “the job one”

# 定义 job
job_two:
stage: test #如果此处没有定义stage,其默认跟job_one一样也会是test
only:
- master #只有master分支提交代码才会执行这个任务
script:
- echo “the job two”
allow_failure: true #允许失败,即不影响下步构建

# 定义 job
job_three:
stage: build
except:
- dev #除了dev分支,其它分支提交代码都会执行这个任务
script:
- echo “the job three”
when: always #不管前面几步成功与否,永远会执行这一步。它有几个值:on_success (默认值)\on_failure\always\manual(手动执行)

GitLab-Runner

Installation

本教程的安装环境为Ubuntu18.04。

  1. 运行以下命令增加GitLab官方仓库:
    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
  2. 安装最新版本的GitLab Runner,或者选择特定的版本:
  • 安装最新版本: sudo apt-get install gitlab-runner
  • 选择特定的版本: sudo apt-get install gitlab-runner=10.0.0

Register

此处是将你的GitLab Runner注册到GitLab page上,让GitLab page可以和你的Runner通信。

在注册Runner之前,你首先需要:

  1. 安装好Runner的主机
  2. 从GitLab page上获得token

接着注册,运行命令:sudo gitlab-runner register

输入GitLab URL:

  1. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ):
  2. https://newgitlab.com/

输入你的注册token:

  1. Please enter the gitlab-ci token for this runner
  2. xxx
注意:你可以通过GitLab项目页-->Settings-->CI/CD-->Runners来获得URL和token,建议按项目group来设置Runner。

输入对这个Runner的表述(同时也是这个Runner的名字):

  1. Please enter the gitlab-ci description for this runner:
  2. [hostame] my-runner
输入Runner的tag,稍后你同样可以在GitLab page上修改它:
  1. Please enter the gitlab-ci tags for this runner (comma separated):
  2. my-tag,another-tag
注意 tag可以有多个,各 tag之间用逗号隔开。如果你使用了多个 tag,那么当你想用这个 Runner时,在.gitlab-ci.yml的 tag字段里也必须明确指明这些 tags。

输入Runner的executor:

  1. Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
  2. docker

如果你选择Docker作为Runner的executor,你还要选择默认的docker image来运行job(也可以在.gitlab-ci.yml里指明你需要用的image):

  1. Please enter the Docker image (eg. ruby:2.1):
  2. golang:1.13.1:latest

注册完成后你可以在/etc/gitlab-runner里重配这个Runner的配置文件 config.toml。

Usage

直接运行Runner:sudo gitlab-runner run

将Runner作为一个服务:

  • 将GitLab Runner安装为系统服务:sudo gitlab-runner install -n "<service-name>" -u <user-name>
  • 启动服务:sudo gitlab-runner start -n "<service-name>"

直接运行Runner:sudo gitlab-runner run

将Runner作为一个服务:

  • 将GitLab Runner安装为系统服务:sudo gitlab-runner install -n "<service-name>" -u <user-name>
  • 启动服务:sudo gitlab-runner start -n "<service-name>"

参考官方文档: https://docs.gitlab.com/runner/ 和 https://docs.gitlab.com/ee/README.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向 着 太 阳 出 发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值