Jenkins使用小记

目的:gitlab push代码通过webhooks自动触发Jenkins构建设置

1、Jenkins下载与安装

安装包从https://jenkins.io/download/下载,最好下war包,然后执行 java -jar jenkins.war ,就可以通过 http://localhost:8080 访问(内置了Jetty Web容器)。可以通过--httpPort=8088 或 --httpsPort=8088 配置端口,小于1024的端口需要管理员权限。

Jenkins插件安装:在 系统关联 -> 插件关联 -> 可选插件 中安装 Gitlab Hook Plugin,GitLab Plugin

2、配置Jenkins所在机器免秘钥登录GitLab。略

3、配置Jenkins任务:(这里假设要自动构建的项目为Maven项目SenseStudyServer)

  1. "新建任务"
  2. "构建一个自由风格的软件项目" ,并取个项目名,可以取与你GitLab上项目名一样,如SenseStudyServer
  3. 在 "源码管理" 的Repository URL里填入GitLab上项目Git地址,如:[email protected]:SenseLab/SenseStudyServer.git
  4. 在 "构建触发器" 勾选 "Build when a change is pushed to GitLab." ,会根据上面取的名字给出GitLab webhook URL: http://localhost:8080/project/SenseStudyServer,供后续GitLab上配置。
  5. 在 "构建" 中"增加构建步骤",选择 "执行Shell",由于我们要构建的项目是Maven项目,所以写入如下内容:
    #!/bin/sh
    mvn clean package;
    java -jar target/sensestudy-0.0.1-SNAPSHOT.jar  --spring.profiles.active=prod

    这些命令的Contex为从GitLab pull下来的项目的根目录。

4、GitLab项目配置:登录gitlab找到相应项目,在 "Settings" -> "Integrations" 中 "Add webhook",输入上面的GitLab webhook URL。注意将localhost改为Jenkins所在主机的地址,若Jenkins启动时改变了端口,则这里相应地需要改变端口。(配置了此webhook后,当项目下发生push等变动时会调用该URL向Jenkins post相关数据)

可以点击test以看是否能连上Jenkins,默认情况下会出现 executed successfully but returned HTTP 403 ,可以在Jenkins的 "系统关联" -> "全局安全配置" 中去掉 "防止跨站点请求伪造" 

经过上述配置,每当GitLab上有代码更新时Jenkins变回拉取代码并执行第3步中定义的shell命令,完成自动构建。但存在一些问题:

  • 默认情况下,向GitLab上该项目的任何分支下提交都会出发Jenkins重新构建,可以在Jenkins配置的 "构建触发器" 下指定在特定分支有更新时才除非构建,如正则表达式 */master,来指定在master源码有更新时才重新构建。
  • 按上述shell命令构建后可以访问SenseStudyServer服务,但由于服务器一直在运行所以使得构建一直在运行中未能结束,可以通过加 & 在后台运行,这时候构建可以正常完成。然而此时SenseStudyServer服务随着构建完成而被关闭了,解决方法:?To Do

参考资料:

https://blog.csdn.net/guanshulixiao/article/details/76174731

猜你喜欢

转载自www.cnblogs.com/z-sm/p/9184896.html
今日推荐