GitLabCICD

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.1-1.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

0 srw-rw---- 1 root root 0 Dec 7 10:16 /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
0 srw-rw---- 1 root docker 0 Dec 10 10:30 /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参数

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

修改参数

ExecStart.................
#添加--insecure-registry=192.168.226.131
#192.168.226.131 是绑定hosts指向内网的一个harbor服务器
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=mysql.gift

 

修改完成后 执行:

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

并重启harbor

 

CICD命令

GitLab CI/CD | GitLab

 

Gitlab CI yaml官方配置文件翻译 - 简书 (jianshu.com)

 

内置变量

Gitlab-CICD最简单明了的入门教程_小C的代码之路-CSDN博客

 

 

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

posted @ 2019-12-18 20:26  西伯利亚的狼  阅读(1974)  评论(0编辑  收藏  举报