Jenkins + GitLab 持续集成环境搭建
GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务平台,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定方式自动运行测试、构建和部署的任务,帮组开发团队更高效的集成和发布代码。
一、Jenkins 安装 + GitLab安装
Jenkins 安装见 https://www.cnblogs.com/universesky/p/14272386.html
GitLab 安装见 https://www.cnblogs.com/universesky/p/14272882.html
二、安装和Git,GitLab插件
用浏览器打开Jenkins,点击“系统设置”
点击“插件管理”
切换到“可选插件”,分别搜索“GitLab Plugin”和“Git Plugin”,然后点击“直接安装”。如果在“可选插件”里没有搜到,可能默认你已经安装了,可以在“已安装”里查看
已安装过了,如下图:
安装完会显示:
三、配置GitLab插件
打开GitLab,点击“setting”——“Access Tokens”,设置“Personal Access Tokens”,名字一般填写应用项目名称,
有效期根据需要设置,设置完成后会返回token, token要自己复制出来保存,后面需要使用,页面关闭后,再次进入该页面,不再展示
token。 Personal Access Tokens: ZxMREts38-2RG6ezWWJc
如下所示:
jenkins服务器上执行
curl -X PUT --header "PRIVATE-TOKEN: ZxMREts38-2RG6ezWWJc" 'http://192.168.17.100/api/v4/application/settings?allow_local_requests_from_hooks_and_services=true' 如下图:
之后的配置构建触发器时要用到。
打开Jenkins,点击“系统管理”——“系统设置”,如下所示:
点击“配置”下拉框,点击“Gitlab”选项,如下所示:
配置GitLab,”Connection Name”随便填,“Git Host URL”填GitLab的访问地址,然后点“Add”——“jenkins”,如下所示:
设置完了,要测试一下能否连接成功,点击“test connection”,要看到返回“Success”才行,如下所示:
然后点击页面底下的“应用”,再点击“保存”,如下所示:
四、配置Git插件
打开Jenkins,点击“系统管理”——“系统设置”
点击“配置”下拉框,选择“Git plugin”选项
设置Git插件的全局配置,然后点击页面底下的“应用”,再点击“保存”
全局配置就是“Gitlab创建项目”时的global setting ,在项目第一次commit前,这些信息都可以在GitLab的项目的首页里找到,如下图:
五、创建一个Jenkins Job
在jenkins里,一个任务叫做一个job。一般我们的项目会有多个分支,比如开发分支和产品分支,我们可以对每一个分支都新建一个job,比如,我们对开发分支创建一个测试的job,每次有代码提交就自动运行一次测试,对产品分支创建一个打包的job,每次有代码提交就运行打包任务。
现在,我们只是单纯的创建一个job,来演示jenkins自动运行任务的过程。首先,点击“创建一个新任务”
“item name”可以随便起,然后点击“构建一个自由风格的软件项目”
点击 “确定”,
至此,创建一个Job成功了
六、生成访问Gitlab的ssh秘钥
打开 GitLab,点击右上角的“setting”—— SSH Keys,就可以进入到添加界面,如下所示:
生成SSH Key,并将公钥粘贴到“Key”里,name可以随便起,但最好能一看就知道是某个人或某台机器。
从gitlab以SSH方式拉取或提交代码需要用到这个SSH 秘钥,哪台机器需要从gitlab上拉取代码,就在哪台机器上生成一次SSH Key,因此,在jenkins服务器上,以及你的开发PC上,都需要生成SSH密钥。
1)CentOS 执行 ssh-keygen
全部按 Enter 使用默认值(当然也可以设置密码),这里就使用默认值,也就是无密码
这会生成一对公钥和私钥:
注意:如果这是jenkins服务器,则记下私钥的存放路径(私钥、私钥、私钥,不是公钥,重要的事情说三遍),下一步将会用到,否则跳过这一步:
2)打开公钥文件,全选其中文字,复制到粘贴板
3)回到添加SSH Key的界面,将公钥粘贴到其中,然后点击“add key”
至此,在GitLab上创建项目已经完成,你可以复制运行项目主页上的命令来同步新项目到本地。
七、配置Job
打开jenkins,进入job页面:
点击“配置”:
八、配置Job的源码管理
选择“源码管理”,选择“Git”,然后去GitLab中复制项目地址,粘贴到“Repository URL”,然后点击“credentials”后面的“Add”按钮
在弹出页面里面:
- Kind 选择 SSH Username with private key
- Username 填 root
- PrivateKey 选择 From a file on jenkins master ,然后将服务器的 私钥(私钥、私钥、私钥,再说三遍) 粘贴进去
- passphrase 填创建SSH秘钥时的设置的密码,未设置可不填
然后点击“Add”
在“credentials”里选择我们刚刚创建的认证方式:
如果没报错,说明成功了,点击页面底部的“apply”。如果出错了,会在“Repository URL”和“Credentials”之间显示红色的错误信息。
jenkins job默认对master分支进行构建,你也可以自定义分支。这要求你的Gitlab代码仓库中要存在这个分支,一般来说,就是要向代码仓库提交一次更改,
请 自行完成(Gitlab项目刚创建时是空的,一个分支也没有,这样的话,自动构建时会出错)
九、配置Job的构建触发器
Jenkins 要先安装 GitLab Hook 插件
点击 Advance
点击 Generate 生成 Secret token: 7c892f8b26e50db9a347ab98959e64eb
在gitlab配置webhooks, 实现代码在gitlab上的提交后立马自动进行jenkins的job构建
设置webhooks,
http://192.168.17.100:8081/jenkins/project/test
7c892f8b26e50db9a347ab98959e64eb
点击 Add webhook,然后测试
jenkins job 会触发构建工作,如下图:
常见构建触发器、:
- Build after other projects are built 当另一个构建任务完成之后触发
- Build periodically 周期性的触发
- Build when a change is pushed to GitLab. GitLab CI Service URL: http://192.168.17.100:8081/jenkins/project/test当代码有更新的时候触发,通过GitLab CI
- GitHub hook trigger for GITScm polling 通过Github钩子触发
- Poll SCM 定期检查代码有无更新,有更新时触发
十、配置Job的构建脚本
在build栏目里,选择“jenkins execute shell”,然后输入你项目的构建命令(这依赖于你的项目,如Maven的maven build,gulp的gulp xxx 等等)
此处为演示触发项目自动构建,后期会介绍maven编译项目并部署到tomcat中。
输入你项目的构建命令
十一、将构建状态推送回git
点击“添加构建后操作步骤”
选择“public build status to gitlab”:
点击“高级”,填写“build name”:
点击“应用”,点击“保存”。
完成之后,在gitlab提交代码触发了构建之后,gitlab界面上应该会显示构建状态图标,如下图所示:
后记
至此,所有工作已经完成,现在你提交代码到GitLab,jenkins会自动帮你运行一次构建命令。
-------------------------------------
出现webhook 错误参考 :https://blog.51cto.com/bigboss/2129477
参考:https://blog.csdn.net/ruangong1203/article/details/73065410?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control