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

posted @ 2021-01-12 19:29  adminfuzw  阅读(136)  评论(0编辑  收藏  举报