废话:


 别人开场都是前言,我这统称为废话。

      确实很久没有写博客和公众号了,因为这几个月以来实在太忙太多事。换了新的工作,新的朋友圈,一切从头来过,我不仅要适应还要努力工作,不然我怕我的“狗盆”不保😰。

 

    我以为新公司就不要每天负责那么些东西,可以安安静静安安心心的撸代码,草率了,比以前搞得东西更多了......我........🤨,那就继续奥里给吧。

 

    新公司使用gitlab项目管理,之前用的并不多,偶尔使用GitHub上传一些demo项目,没想到这玩意越用越香啊,太好用了,墙裂推荐。


废话完毕~天也不早,干点正事。

gitlab实现自动化部署的方式就是通过安装gitlab-runner,通过每个项目给的url和token,就会自动拉取代码,然后执行一系列你写好的shell就OK。

 

 

Gitlab-Runner安装:


1.docker安装:

docker pull gitlab/gitlab-runner:latest
docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest
//初始化注册
docker exec -it gitlab-runner gitlab-runner register

  此时注意了,就会提示让你输入Url——token——desc(项目描述)——tags(就是你这个runner的名称),url和token是每一个项目gitlab-runner给你默认分配的。

把这里的url和token拷贝出来,输入到控制台提示的就可以了,注意注意:tags必须是唯一的,一个项目下的url和token可以公用,但是输入tags的时候一定要注意不要重复。不然之后自动化部署会出现问题。

注册成功过的tags在上图的位置也可以看到。


手动安装:

 yum -y install gitlab-runner_amd64.rpm

 这里注意一点:yum 安装的git版本好像只能是1.8的,再更新还是1.8,然而这个版本太低了,会导致后面自动化部署的时候出现这个问题。

 这个错误就是git版本的问题,解决办法如下:

#安装源
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
#安装git
yum install git
#更新git
yum update git

确定版本在2.x

还有jdk和maven安装的方式,这里不描述,那都是常用的东西。需要提一点的是权限问题。因为会用到maven打包,所有要保证给足权限。

cd 到maven的bin路径下执行命令:

chmod +755 ./*

 

看到这些文件亮了,说明就可以了。


.gitlab-ci.yml文件的重要性:

安装完毕!

这个配置文件里面有很多命令,大家可以参考百度,用到的其实并不多,我也没有更深的研究,够用了。

  • stages:关键字,可选,用于自定义任务流程。若缺失,默认流程为:build > test > deploy;
  • job 1:任务名称,可自由定义,可包含空格;
  • stage:关键字,用于指定任务在什么stage运行;
  • script:关键字,按顺序撰写该任务的shell脚本;
  • artifacts:关键字,用于指定该任务执行完毕后,哪些目录或文件需要保留。所有内容会打包成一个zip压缩包,供下载或后续任务使用;
  • only:关键字,用于指定依赖的代码分支;
  • image:关键字,可选,可制定一个docker镜像,用于执行该任务。若缺失,使用Runner配置配置;
  • when:关键字, 可选,用于指定任务触发的条件。若缺失,一旦有代码提交到该分支就会自动运行。
  • 可设置为手动触发; [官方文档](https://docs.gitlab.com/ee/ci/yaml/README.html)
  • 注意:.gitlab-ci.yml是一个YAML格式文件,因此,缩进应该使用空格,而不要使用tab。

 

注意注意:所有自动化部署的东西,第一个镜像包要么通过DockerFile手动打包,要么就是利用插件在idea里打包。

再注意:.gitlab-ci.yml文件在项目中放的位置,尽可能的采用springboot单体项目模式,像springcloud管理的项目,他会把你所有的子module都打包,如果你放在子module下面,是不会触发自动部署的。

那么问题来了,如果现在就是springcloud管理的项目下有多个module,怎么办呢?

建立不同分支,每个分支放单独的项目(前提是公共的模块,已被打包放置仓库,不然maven打包其他项目的时候肯定会找不到其他依赖的包)。

 

 


最后结果:

随便变更一个文件上传到gitlab,找到你项目在gitlab的位置,CI/CD-作业

所有的执行记录。

 点开是可以看到实时的日志的。

结果如此,即为成功~ 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐