CI/CD是什么

CI全名Continuous Integration,啥意思?就是我们经常听到的持续集成概念。
当开发每天会提交多次代码到主干上,会做一些重复性的动作时,就可以用持续集成环境来操作。
有集成了,就肯定少不了它的好基友,没错就是CD。
CD全名是Continuous Deployment,是持续部署。
CD还有个小号,交持续交付,英文全称是Continuous delivery,缩写也是CD。
CI/CD优点是,重复的工作用自动化来代替、减少时间成本、版本发布时间减短了。

CD图

有什么类型的CI

jenkins

gitlab

GitLab

1、安装gitlab

gitlab是一款项目软件管理工具。

2、什么是gitlabrunner

GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。
 所以,GitLab-Runner就是一个用来执行软件集成脚本的东西。你可以想象一下:Runner就像一个个的工人,而GitLab-CI就是这些工人的一个管理中心,所有工人都要在GitLab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,GitLab-CI就会通知相应的工人执行软件集成脚本。如下图所示:

3、安装gitlab runner

添加官方库

 # For Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

命令安装

# MacOS
sudo brew install gitlab-ci-multi-runner
# For Debian/Ubuntu/Mint sudo apt-get install gitlab-ci-multi-runner # For RHEL/CentOS/Fedora
sudo yum install gitlab-ci-multi-runner

或

建议找国内镜像源安装(清华大学开源镜像源)

https://mirrors4.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/gitlab-runner-12.4.1-1.x86_64.rpm

wget https://mirrors4.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/gitlab-runner-12.4.1-1.x86_64.rpm

yum localinstall -y gitlab-runner-12.4.-.x86_64.rpm

注册

gitlab-runner register
输入此命令后会提示一下操纵 输入你的gitlaburl
lease enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
XXX 输入你的gitlab注册令牌
Please enter the gitlab-ci token for this runner
XXX 输入说明
Please enter the gitlab-ci description for this runner
XXX 输入runner的tags(给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner)
是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
Please enter the gitlab-ci tags for this runner (comma separated)

输入 Runner 执行方式(一般都是shell) 说明https://docs.gitlab.com/runner/executors/README.html
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

shell

(1)、手动设置  具体的  runner,   指定到特定的runner

runner类型

 GitLab-Runner可以分类两种类型:Shared Runner(共享型)和Specific Runner(指定型)。
  Shared Runner:这种Runner是所有工程都能够用的。只有系统管理员能够创建Shared Runner。
  Specific Runner:这种Runner只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建Shared Runner。

点击修改一下 runner

(2)、共享runner  只能root用户创建这个runner

(3)、群组runner   在组上面设置,这个用的比较多。

(4)、k8s runner

4、项目添加 .gitlab-ci.yml 配置文件  。可去官网查看配置文件语法

一般ci文件还会添加docker login的命令,进行命令推送到仓库的操作

(1)ci命令是在gitlab-runner执行的。gitlab-runer 使用的用户是 gitlab-runner 用户。此用户执行docker命令时候有权限问题,一般会有下面提示

解决方法

原因是我用root运行docker,而gitlab的runner是用gitlab-runner这个帐户来运行的,遇到了权限问题。

ls -slh /var/run/docker.sock

 srw-rw----  root root  Dec  : /var/run/docker.sock

用su - gitlab-runner切换帐户后,也会报告相同的错

$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host? 解决方法是创建一个docker组
groupadd docker
并重启docker进程,这样它会自动用docker这个组在启动
systemctl restart docker
ls -slh /var/run/docker.sock
srw-rw---- root docker Dec : /var/run/docker.sock
最后把gitlab-runner加入docker组就可以了。
usermod -aG docker gitlab-runner

(2)流水线直接卡住,提示信息        此作业被卡住,因为没有任何该项目指定标签的 runner 在线

当时我用的具体runner,    这个原因就是在创建 .gitlab-ci.yml的时候没有给任务指定标签,或者指定的标签不存在而导致的。  (创建runner时指定的标签要和ci文件里面的标签一样)。或者  用群组runner也可以解决这个问题。

(3)  docker login报错Error response from daemon: Get https://10.10.90.105/v2/: dial tcp 10.10.90.105:443: getsockopt: connection refused

解决方案:修改docekr参数

文件:/usr/lib/systemd/system/docker.service

修改完成后 执行:

[root@c7test_master ~]# systemctl daemon-reload
[root@c7test_master ~]# systemctl start docker

dockerfile

dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
COPY . /app/bin WORKDIR /app/bin
ENV ASPNETCORE_URLS http://*:5035 ENTRYPOINT ["dotnet", "CoreWebDemon.dll"]

运行镜像

docker run -d -p 9988:5035 76c71065e1ff

推荐文档

https://www.cnblogs.com/fithon/p/6645020.html

https://gitlab.com/gitlab-org/gitlab-runner

GitLabCICD的更多相关文章

  1. 一个简单的golang项目,实验 gitlab-ci-cd Pipelines

    至少两台主机,gitlab + gitlab-runner gitlab + gitlab-runner安装略 项目源码:https://gitee.com/M27149/testgo.git 在自建 ...

  2. Gitlab-CICD实践篇

    一.背景 随着公司项目使用gitlab越来越多,业务发布的次数越来越频繁,对于发布效率提出了更高的要求.从2012开始,Gitlab官方开始集成了Continuous Integration (CI) ...

  3. 03 持续集成和部署/基础设施 - DevOps之路

    02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...

  4. 50+ Useful Docker Tools

    As containers take root, dozens of tools have sprung up to support them. Check out your options for ...

  5. asp.net core结合Gitlab-CI实现自动化部署

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一 ...

  6. gitlab Failed to register this runner. Perhaps you are having network problems runner 注册失败问题解决

    1. 低版本安装地址 https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.11.2/index.html   2. 使用 yum ...

  7. DevOps平台

    DevOps定义(来自维基百科): DevOps(Development和Operations的组合词)是一种重视"软件开发人员(Dev)"和"IT运维技术人员(Ops) ...

  8. gitlab的CI/CD实现

    环境准备: gitlab账号公网账号:代码仓库和编译器 目标机:装有docker和gitlab-runner环境的服务器(Linux或类unix机器,我使用的时centos 项目代码:testgola ...

随机推荐

  1. 信噪比(signal-to-noise ratio)

    SNR或S/N,又称为讯噪比.是指一个电子设备或者电子系统中信号与噪声的比例.这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外 ...

  2. UFUN 函数 UF_DISP (UF_DISP_create_image ) (如何把显示部件部分截图放到指定的文件夹中)

    //此函数功能是输入工作部件的tag,返回工作部件的路径 static string path_name(tag_t path_tag) { ]=""; //得到工作部件的路径 U ...

  3. Python爬虫 | Selenium详解

    一.简介 网页三元素: html负责内容: css负责样式: JavaScript负责动作; 从数据的角度考虑,网页上呈现出来的数据的来源: html文件 ajax接口 javascript加载 如果 ...

  4. 发布jar包到远端github仓库使用(将github仓库当作maven仓库)

    今天把单点登陆的core模块搬到了github仓库 并且利用github仓库作为maven仓库 在项目中进行了引用 1. 起初看技术博客没有完全引入进来,调整了一下OK了 2. 还可以将其他模块或者工 ...

  5. 求等差数列前$n$项和$S_n$的最值

    一.方法依据: 已知数列\(\{a_n\}\)是等差数列,首项为\(a_1\),公差为\(d\),前\(n\)项和为\(S_n\),则求\(S_n\)的最值常用方法有两种: (1).函数法:由于\(S ...

  6. GoCN每日新闻(2019-11-04)

    GoCN每日新闻(2019-11-04) GoCN每日新闻(2019-11-04)   1. Go中垃圾收集器是如何标记内存的 https://medium.com/a-journey-with-go ...

  7. nginx 日志之 error_log

    Nginx错误日志平时不用太关注,但是一旦出了问题,就需要借助错误日志来判断问题所在. 配置参数格式:error_log /path/to/log level; Nginx错误日志级别 常见的错误日志 ...

  8. HGNC数据库 HUGO基因命名委员会

    http://www.genenames.org/ HGNC 全称为HUGO Gene Nomenclature Committee, 叫做 HUGO基因命名委员会,负责对人类基因组上包括蛋白编码基因 ...

  9. 第01组 团队Git现场编程实战

    目录 一.组员职责分工 二.github 的提交日志截图(鼓励小粒度提交) 三.程序运行截图 四.程序运行环境 五.GUI界面 六.基础功能实现 七.鼓励有想法且有用的功能 八.遇到的困难及解决方法 ...

  10. 树形dp专题总结

    树形dp专题总结 大力dp的练习与晋升 原题均可以在网址上找到 技巧总结 1.换根大法 2.状态定义应只考虑考虑影响的关系 3.数据结构与dp的合理结合(T11) 4.抽直径解决求最长链的许多类问题( ...