================================================================================================================================================

需求:

1.已经启动了jenkins【https://www.cnblogs.com/sxdcgaq8080/p/10489369.html

2.已经启动了gitlab【https://www.cnblogs.com/sxdcgaq8080/p/10484576.html

3.jenkins需要按照上面步骤,已经确定maven插件Git插件GitLab插件GitLab hook插件Maven Integration插件Publish Over SSH插件已经成功安装【Git插件在第一篇初始化启动,推荐安装的、其他几个插件是在第一篇末尾安装的】

================================================================================================================================================

 需要了解的:

1.webhook网络钩子

可以看成是一个callback  回调方法
本回调方法核心即包含:
    触发条件+可供触发的URL+密码(可选) 
    触发条件为:push、merge、PR(即 New  Pull Request)等等git操作,
    比如你提交一个push操作,就会触发URL请求,会以POST请求去请求这个URL。

除此以外,你还可以自己指定这个POST请求的数据格式。(JSON,x-www-form-urlencoded等)。
2.webhook是gitlab端的

触发webhook的条件,可以自行配置,都是本地对gitlab的git操作

触发后去请求的URL地址,是Jenkins提供的。也就是触发后是去请求Jenkins的

 

3.而实现代码从gitlab到jenkins到自动部署,webhook就是gitlab和jenkins之间的关键点。


后续会先配置jenkins,以获取到URL和Token,拿着这两个东西去gitlab配置webhook,即可。

同时,webhook本身还会有很多的触发条件可以勾选。后续步骤可见!

 

 

=================================================================正文开始====================================================================================

1.jenkins全局工具配置【docker容器Jenkins,自动安装】

地址:https://www.cnblogs.com/sxdcgaq8080/p/10571718.html

 

2.jenkins全局安全配置

进入系统管理   ------> 全局安全配置

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

取消勾选CSRF

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

原因:

webhooks与jenkins配合使用时提示:HTTPStatus403-Novalidcrumbwasincludedintherequest,这是因为jenkins在http请求头部中放置了一个名为.crumb的token。在使用了反向代理,并且在jenkins设置中勾选了“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”之后此token会被转发服务器apache/nginx认为是不合法头部而去掉。导致跳转失败。

 

 

3.新建Jenkins任务

 

3.1点击新建任务,输入名称【本处输入名称注意】

【注意,本名称一般和项目名称一致,因为本名称会在jenkins工作空间下生成目录,类似于IDEA或Ecplise的工作空间的概念】

【所以,一般情况下,保证本名称=项目名称=docker镜像名称=docker容器名称  这样能尽可能的减轻jenkins配置的shell命令的复杂性!从而形成一定的规范!!】

选择构建一个Maven项目【因为是spring boot的服务】

 

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

3.2 General选项卡,通用设置下输入描述信息

自由输入

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

3.3 Source code manager 源码管理 选择Git

【内网推荐使用Http地址去clone项目】

【分别使用SSH和HTTP取clone项目,可以去看:https://www.cnblogs.com/sxdcgaq8080/p/10577252.html

【如果此处添加地址后报错,或者Jenkins构建报错:Please make sure you have the correct access rights and the repository exists.去看这篇:https://www.cnblogs.com/sxdcgaq8080/p/10577241.html

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

 3.4 Build Triggers 构建触发器的配置

【构建触发器中配置,会获取到文章开始提到的URLToken,这两个东西需要记录下来,供gitlab配置webhook使用】

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

记录URL

http://192.168.92.130:9980/project/swapping

 

URL和Token都需要填写到GitLab中,去配置webhooks!!!

 

点击高级后,最下方可以点击生成Token

记录Token

6b2eb2c3a9d1d2f64c73784bf30a4cda

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

 

3.5 Build Environment 构建环境的配置根据自己需求配置

 【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

 

 

3.6 Pre Steps 即jenkins构建前一步 需要做的事情

 【本处,配置前一步需要做的事情是:清理swapping即本项目在jenkins的workspace中的历史文件夹】

【在本步骤配置时,你可以不用知道WORKSPACE具体的地址在哪里,因为下方有链接可以查看到当前jenkins中有哪些可用的变量供你使用】

【默认WORKSPACE地址:/var/jenkins_home/workspace】

【当然,如果你jenkins是docker启动的,并且挂载了目录在宿主机,那你在宿主机也是可以看到的】

 

【注意:本处选择是是,执行shell,则表示本处配置的shell命令,是默认在jenkins容器中执行的,而不是在宿主机上】

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

可以查看可用的全局变量

【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot  实现自动化部署

 

前一步要做的shell命令:

SERVER_NAME_1=swapping
echo "=========================>>>>>>>工作空间WORKSPACE的地址:$WORKSPACE "
cd $WORKSPACE

echo "=========================>>>>>>>进入工作空间WORKSPACE,清除工作空间中原项目的工作空间$SERVER_NAME_1 "
rm -rf $SERVER_NAME_1

echo "=========================>>>>>>>清除工作空间中原项目的工作空间$SERVER_NAME_1 ......成功success"
View Code

相关文章: