GitLab-CI GitLab-Runner 持续集成

背景环境

环境版本备注
windows10
vagrant2.0这玩意儿做开发时挺好玩,可以单独写一篇博文
CentOS7.2

早前我用的是 Gitlab 中的 WebHooks 解决解决发布的问题,但是需要自己搭建很多东西还要专门为此写脚本,在研究 Gitlab 中发现原来早就帮我们做好这些事情,只是没有发现而已

Gitlab-CI 简介

Gitlab-CI 顾名思义就是配合gitlab使用的一套可持续集成系统 (Continuous Integrations) ,8.0以后内部集成并默认开启。

Gitlab-Runner 简介

Gitlab-Runner 是配合 Gitlab-CI 的一套工具,Gitlab-CI 负责项目的构建任务调度,Gitlab-Runner 负责具体的脚本任务执行

两者之间的关系和区别

image

image

Pipline

  • pipline 在分支版本根目录的 .gitlab-ci.yml 文件中定义
  • 版本的每一次更新 即 commit 或 merge 行为都会触发 pipline
  • 一次pipline的执行相当于一次构建任务
  • 构建任务包含 安装依赖、单元测试、编译、打包、部署到服务器等行为

Stages

  • 一个pipline 有多个 阶段(stage)这些阶段是串行执行的,比如 build -> test -> deploy
  • 默认任何一个阶段执行失败或异常整个pipline即中断

Jobs

  • 每一个阶段(stage)都包含多个 任务(job)
  • 这些任务是并行执行
  • 所有 job 成功执行 这个 stage 才算是成功执行,换言之如果job失败了那么stage失败即pipline失败

他们之间的关系,如图所示

image

在宿主机上安装 Gitlab-Runner

宿主机不一定是生产服务器,我们可以在伺服上配置 Gitlab-Runner 让 Runner 完成所有的构建任务后发布代码到目标服务器。由于我这边做的是PHP开发没有编译、打包等过程,直接拉去代码等简单操作即可,所以将 gitlab-runner 部署在目标服务器上了。

具体安装教程,参照官方文档

以下是本人安装以及配置的过程,全程以root身份安装和配置

# CentOS 7
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

# 安装
yum install -y gitlab-runner

# 如果提示出现错误
# Delta RPMs disabled because /usr/bin/applydeltarpm not installed. yum install deltarpm
# 另外如果出现 No Presto metadata available for base. 的话 try yum provides '*/applydeltarpm' 然后 yum install deltarpm

# 注册宿主runner
gitlab-runner register

# 启动
systemctl start gitlab-runner.service

# 填写注册信息
url
token
description  # 描述
tags         # 如果填写 tag 那么 yaml 配置文件必须制定了tag才能使用这个runner
executor     # 执行容器 一般为 shell 

# 如果默认用 root 用户 register 那么 配置文件在 /etc/gitlab-runner/config.toml
# 如果是其他用户 register 配置文件在 ~/.gitlab-runner/config.toml

全程以 root 身份操作是不推荐的

gitlab-runner register 后的配置文件是写入 /etc/gitlab-runner/config.toml 中的,Gitlab-Runner 的是以 gitlab-runner 身份运行的,而我的 NginxPHP-fpm 是以 www:www 身份运行的,web 的目录也是 www:www 这样会出现权限问题,并且通过组和其他方式都不能完美解决问题,不如直接用 www 身份执行部署任务。

注册后 runner 后的配置文件存放在 ~/.gitlab-runner/config.toml

简单的前台调试用www运行gitlab-runner

# 前台运行
gitlab-runner run -u www # 以 www 身份运行

使用 www 身份后台执行 gitlab-runner 服务

# 后台执行

# gitlab-runner 有 install、uninstall、start、stop、restart、status
# 这6个命令就是和服务相关的

# 停止服务
systemctl stop gitlab-runner.service

# 卸载旧有的服务包括 root 创建的 runner 服务
gitlab-runner uninstall -n gitlab-runner

# 用www身份安装服务
gitlab-runner install -u www -d /home/www -c "/home/www/.gitlab-runner/config.toml"
# -u 运行身份
# -d 构建时的工作目录
# -c register 后的配置文件存放路径

# 运行服务 便是 www 身份
gitlab-runner start

# 查看
ps aux | grep gitlab-runner

# root      4431  0.4  2.1  55804 13488 ?        Ssl  15:31   0:00 
# /usr/bin/gitlab-runner run 
# --working-directory /home/vagrant 
# --config /etc/gitlab-runner/config.toml 
# --service gitlab-runner 
# --syslog 
# --user www

.gitlab-ci.yml 文件的配置

关于 yaml (Yet Another Markup Language) 具体请 Search 一下

# .gitlab-ci.yml

# 阶段,串行执行,失败则终止执行
stages:
  - deploy

# 具体任务,必须指定 阶段(stage)
# 并列执行,只有全部成功执行该 stage 才会进入下个阶段
publish:
  stage: deploy
  tags:        # register 时绑定的 tags
    - dinglc_wap_test 
  only:        # 特定版本分支才会执行
    - develop
    - master
  script:      # 具体执行的脚本,串行执行,失败则终止
    - whoami
    - bash /webservice/shell.sh
参考

GitLab-CI与GitLab-Runner

转载于:https://www.cnblogs.com/dongyanglv/p/7710700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值