================================================================================================================================================
需求:
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全局安全配置
进入系统管理 ------> 全局安全配置
取消勾选CSRF
原因:
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的服务】
3.2 General选项卡,通用设置下输入描述信息
自由输入
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】
3.4 Build Triggers 构建触发器的配置
【构建触发器中配置,会获取到文章开始提到的URL和Token,这两个东西需要记录下来,供gitlab配置webhook使用】
记录URL
http://192.168.92.130:9980/project/swapping
URL和Token都需要填写到GitLab中,去配置webhooks!!!
点击高级后,最下方可以点击生成Token
记录Token
6b2eb2c3a9d1d2f64c73784bf30a4cda
3.5 Build Environment 构建环境的配置根据自己需求配置
3.6 Pre Steps 即jenkins构建前一步 需要做的事情
【本处,配置前一步需要做的事情是:清理swapping即本项目在jenkins的workspace中的历史文件夹】
【在本步骤配置时,你可以不用知道WORKSPACE具体的地址在哪里,因为下方有链接可以查看到当前jenkins中有哪些可用的变量供你使用】
【默认WORKSPACE地址:/var/jenkins_home/workspace】
【当然,如果你jenkins是docker启动的,并且挂载了目录在宿主机,那你在宿主机也是可以看到的】
【注意:本处选择是是,执行shell,则表示本处配置的shell命令,是默认在jenkins容器中执行的,而不是在宿主机上】
可以查看可用的全局变量
前一步要做的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"