一切福田,不離方寸,從心而覓,感無不通。

gitlab 的 CI/CD 初次尝试

一、前言

ci/cd 持续集成持续交付,开发人员尝尝会遇到一些重复工作,比如一个asp.net的网站代码,写完之后要发布,然后再将发布内容移动到部署的服务器上再进行部署,就算你只改了一个页面上的一个字,也要将之前的发布部署过程重新做一遍。

CI 解决了这个重复性问题,开发人员只需git push 提交代码,剩下的工作交给CI , 做CI工作的有gitlab-ci/cd  Jenkins k8s等,中小项目gitlab-ci比较合适,因为它更轻量级一些,本篇仅讨论gitlab的cicd功能。

二、环境

 

IP 角色
192.168.10.202(ubuntu) gitlab
192.168.10.208(centos) git,docker,gitlab-runner

 

 

 

 

 

gitlab git docker 三者的安装 略。且本篇是以docker镜像方式部署

上图为gitlab-ci的过程,其实它只是省略了一些我们的手动发布部署过程,将其自动化,但原来的流程还是一个不能少。所以,我们要进行的第一步,就是手动实现一遍流程。

 

三、手动实现一遍

(gitlab服务器) 创建代码仓库—> (开发PC) git clone —> (开发pc) 修改代码,添加dockerfile —> (开发pc) git push —> (部署服务器) git pull —> (部署服务器) docker build ,docker run

1、创建代码仓库

在创建之前,需要在使用git的机器上设置好ssh,可以参考之前的https://www.cnblogs.com/hallejuayahaha/p/11996332.html

要注意的是,在部署机器上,gitlab-runner安装好后,需要添加一个gitlab-runner的用户,需要添加这个用的ssh,因为在ci自动化后,在部署服务器上的操作都是由这个用户来做的,所以不仅要添加它的ssh,也要docker 免去sudo的指令。

总之就是让gitlab-runner用户,在做部署过程中,不要受到权限的阻碍。

******docker免去敲sudo*******

在安装完docker之后,也会出现一个docker用户组,将你要免去敲sudo的用户添加进去,就可以了

 

添加代码仓库

并将一个.netcore项目创建进去

添加dockerfile文件,仅需在项目上右键,docker支持,vs就可以自动添加。然后git push

这样开发pc端的代码就都提交到gitlab服务器上了,

 2、部署端git pull ,docker build , docker run

 

 

 

镜像已经成功启动,打开浏览器,输入ip + 暴露出来的端口8090

PS:  .NETCORE web中,startup.cs文件中,有

app.UseHsts();

app.UseHttpsRedirection();

这两行要注释掉,不然网站回一直往https跳转,没法进入http的80端口

 

整个手动流程成功。

四、使用gitlab-runner来替代手动部署工作

gitlab-runner替代这张图上第二个箭头的地方

1、安装gitlab-runner

下载二进制文件

赋予权限:

创建gitlabCI用户:

安装并作为运行服务:

 

注册gitlab-runner:

先打开gitlab

 

记住这个url和token

在部署的服务器上

 

然后回到gitlab 服务器,就可以看到我们的runner已经被发现了

PS:!!!!!!!!!!!!!!!这里可以看到第一个runner的连接是没有的,Last contact  is  Nerver

经过排查,我出现这种情况,是因为204这台机器没有在gitlab中配置ssh,将gitlab-runner用户的ssh配置到gitlab中,再重启一下runner

就好了

 

 

点进去稍作修改

 

把这个勾上,它可以使.gitlab-ci.yml在没有指定tag标签值时也能运行

 

 

然后在下面选择,我们想在这个runner上运行的那个项目

3、编写.gitlab-ci.yml

 

 

在项目中添加名为.gitlab-ci.yml的文件

复制代码

复制代码

 

其中的关键字可以参考

https://www.szyhf.org/2017/01/16/gitlab-ci-yml%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E%EF%BC%88%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%91%EF%BC%89/

注意

注意点2

.gitlab-ci.yml文件,应该放在项目的根目录中,每次Git push ,gitlab都会检测到.gitlab-ci.yml,如果检测到,就按照其脚本进行ci部署

 

 

 

4、开发PC gitpush实现自动化部署

见证奇迹的时刻

git push

 

在项目的cd/ci中可以看到命令详情

 

我们打开对象应网站看看

 

已经出现了

现在改一下代码

 

重提交一次Git push

 

 

 

Amazing!!!!!!!!!!!!!!!

 

from:https://www.cnblogs.com/hallejuayahaha/p/13079698.html