建议配合前两篇文章使用(如果没有安装Gitlab和Jenkins):

基于CentOs7的jenkins安装配置: https://blog.51cto.com/u_16904651/11639077
centos7安装部署gitlab: https://blog.51cto.com/u_16904651/11638902

Gitlab用来存储代码文件, Jenkins需要从Gitlab上获取代码文件,然后进行下一步的 构建和 部署 ,下面我 们主要来配置, jenkins任务的配置,主要配置两方面: 源码管理和 构建触发器(webhook)

环境准备:

虚拟机CentOS 7.5

Jenkins

Gitlab

Jenkins和Gitlab同时安装在同一台CentOS上,关闭防火墙,同时修改Jenkins和GitLab的默认端口,否则不能同时启动。

Docker运行

 新建一个空的ASP.NET Core的MVC项目,不启动Https,并添加Dockerfile支持

注:将Dockerfile移到VS解决方案文件同级目录

jenkins结合gitlab实现CI(持续集成)_自动化部署

通过XFTP将Windows上的项目上传到CentOS中,比如/wwwroot下,然后在Xshell命令行中创建Docker镜像及容器:

docker build -t aspnetapp .
docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
  • 1.
  • 2.

通过本地浏览器访问测试,可以通过Docker部署并运行起来:

jenkins结合gitlab实现CI(持续集成)_git_02

GitLab配置

我们需要在Gitlab上先创建好项目,然后上传好代码文件

登录Gitlab**,然后点击**新建项目

jenkins结合gitlab实现CI(持续集成)_自动化部署_03

在Windows上拉取GitLab项目,并推送一个项目到远程Git服务器,注意GitLab本地默认分支为main分支,后面需要修改jenkins对应的配置。

jenkins结合gitlab实现CI(持续集成)_git_04

开启gitlab允许对本地网络发送请求

这个主要为webhook做准备的,否则gitlab不允许项目添加本地网络的webhook

以管理员身份登录gitlab

jenkins结合gitlab实现CI(持续集成)_git_05

Jenkins创建任务和配置任务
安装git和git插件

登录jenknis首先完成git环境和git、gitlab插件的安装,插件直接在jenkins上安装即可

安装插件,参考安装jenkins的文档

jenkins结合gitlab实现CI(持续集成)_触发器_06

在插件管理--->可用插件中搜索gitlab,如下图:

jenkins结合gitlab实现CI(持续集成)_docker_07

找到下面这个gitlab插件:

jenkins结合gitlab实现CI(持续集成)_自动化部署_08

勾选后点击右上角的Install按钮,进行安装GitLab Plugin插件,这个插件主要实现与Jenkins集成,当在GitLab中push代码时可以正确的捕获对应的事件。

安装git环境,在jenkins主机上直接使用yum安装即可
$ yum -y install git
  • 1.
创建任务

创建一个自由风格的项目

jenkins结合gitlab实现CI(持续集成)_docker_09

配置任务的源码管理

在源代码管理配置部分(Source Code Management),选择Git,并输入GitLab的仓储地址(http地址),然后点击Add添加GitLab的认证信息;

jenkins结合gitlab实现CI(持续集成)_触发器_10

输入GitLab的用户名和密码,添加认证信息:

jenkins结合gitlab实现CI(持续集成)_docker_11

修改默认的分支名称,与GitLab进行统一

jenkins结合gitlab实现CI(持续集成)_docker_12

为任务配置构建触发器

通过构建触发器我们可以触发任务的自动构建,这样就不需要手动点击构建任务了,我们这里选择的是 通过webhook触发任务构建, webhook是一个api接口,当接口接收到gitlab发送的信息时就会触发

jenkins任务构建了,我们先启用webhook触发器

jenkins结合gitlab实现CI(持续集成)_自动化部署_13

为webhook生成令牌,在任务的 高级选项 中生成令牌

jenkins结合gitlab实现CI(持续集成)_docker_14

配置完毕后保存任务

Gitlab项目添加webhook关联任务

根据下图添加webhook即可

jenkins结合gitlab实现CI(持续集成)_git_15

保存后测试webhook,测试发送push事件,查看jenkins是否可以接收到,并查看是否触发任务构建

jenkins结合gitlab实现CI(持续集成)_自动化部署_16

回到jenkins查看任务是否触发构建

jenkins结合gitlab实现CI(持续集成)_git_17

通过上面的步骤,gitlab结合jenkins就配置完毕了,当我们往repo项目中推送代码时, jenkins的 repo任务就会被触发自动构建,自动从gitlab下载新代码。

填加shell脚本, 支持.net core的自动部署

填加构建步骤,并选择Execute shell项

jenkins结合gitlab实现CI(持续集成)_触发器_18

输入以下shell脚本:

docker stop aspnetcore_sample
docker rmi aspnetapp
docker build -t aspnetapp .
#注意:1、去掉-it参数;2、增加-d以便在后台运行,否则jenkins会一直构建
docker run -d --rm -p 5000:80 --name aspnetcore_sample aspnetapp
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

jenkins结合gitlab实现CI(持续集成)_触发器_19

测试

打开VS的解决方案,并修改文件文件,然后提交,Jenkins会监测到提交,并自动按步骤进行构建

jenkins结合gitlab实现CI(持续集成)_自动化部署_20