Jenkins结合gitlab实现自动发布

什么是Jenkins?

Jenkins是一个基于java开发的程序集成工具,用于监控持续重复的工作,提供一个开放易用的软件平台,使持续集成变成可能。

Jenkins的目的

  • 持续、自动构建/测试软件项目

  • 监控软件开发流程,快速问题定位及处理,提升开发效率

Jenkins的特性

  • 支持CI/CD

  • 易于安装(yum、war包、rpm)

  • 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告

  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试

  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本等

    扫描二维码关注公众号,回复: 5141412 查看本文章
  • 插件支持:支持拓展插件,如:git、svn、maven、docker等

 产品发布流程

产品设计->开发代码->测试功能->上线发布

通过Jenkins支持:

持续集成(Continuous integration简称CI)

持续交付(Continuous delivery)

持续交付(Continuous deplotment)

环境依赖

最低配置:内存不少于256M,磁盘不低于1G,jdk版本>=8

安装jdk1.8(这里为了简单直接yum)

[root@mode-01-0005 ~]# yum install -y java-1.8.0-openjdk && \
> wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \
> rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key && \
> yum clean all && yum makecache && \
> yum install -y jenkins && \
> systemctl start jenkins

查看Jenkins admin密码并记录

[root@mode-01-0005 ~]# less /var/log/jenkins/jenkins.log

image.png

安装相关目录

[root@mode-01-0005 ~]# rpm -ql jenkins

/etc/init.d/jenkins//启动文件

/etc/sysconfig/jenkins//配置文件

/var/cache/jenkins//缓存文件

/var/lib/jenkins//安装目录

/var/log/jenkins//日志文件

若端口有冲突优先修改默认端口

通过web端访问IP:8080

image.png

进入插件选择界面,如有明确需求,直接安装所需插件即可,这里选择的是推荐,推荐会安装大部分插件

image.png

根据引导创建用户、配置url即可完成安装

需求,结合gitlab做可持续化集成和发布

所需插件

Credentials Plugin 签名证书管理插件
Gitlab Plugin 安装后从gitlab获取代码
Git Plugin & Git Client Plugin 用于Jenkins在gitlab拉取源码
GitLab Hook gitlab触发Jenkins构建项目(钩子)
Gitlab Authentication gitlab和Jenkins认证相关得插件
SSH Plugin 远程执行shell脚本
Publish Over SSH 用于通过ssh部署应用

通过web打开Jenkins操作页面,在插件管理,可选插件中选择要安装的插件直接安装,安装完成后重启Jenkins

为git添加公钥

为公钥定义一个标题,并写入公钥

如果gitlab和Jenkins不在同一主机,那么需要将Jenkins生成的公钥写入

image.png

配置完成后测试是否可以获取代码

[root@mode-01-0005 ~]# git clone [email protected]:test-web/web.git
Cloning into 'web'...
\S
Kernel \r on an \m
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

测试通过后,为Jenkins添加私钥

image.png

选择类型并填入用户名及私钥

image.png

新建一个任务

image.png


配置项目描述及源码管理

image.png

配置完成后测试构建项目是否成功,检查控制台输出,success为成功

image.png

模拟发布web页面

安装apache服务,测试直接yum安装即可

apache启动时注意是否有端口冲突

写一个简单的测试文件,测试是否可以完成推送

[root@mode-01-0005 ~]# ./deploy.sh 
root
Cloning into 'web'...
\S
Kernel \r on an \m
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
\S
Kernel \r on an \m
index.html                                                                                                                                                                      100%   11    75.3KB/s   00:00
[root@mode-01-0005 ~]# cat deploy.sh 
#!/bin/bash
echo $USER 
cd /root/ 
git clone [email protected]:test-web/web.git
cd /root/web
scp -r ./* [email protected]:/var/www/html/ 
rm -rf /root/web

测试完成后继续
为了避免不必要的麻烦在visudo中配置Jenkins免密及执行ssh的权限

在构建中选择相对应的构建方式,保存后构建测试是否可用

image.png

多台web部署只需要增加scp即可

配置触发器,构建钩子,配置触发器在高级选项中Generate生产验证令牌,记录URL和令牌密钥

image.png

gitlab配置集成配置

image.png

创建成功后push event测试,获得返回码200为成功。

image.png

使用流程图展示jod的顺序

安装build pipeline插件,安装成功后做以下操作,根据实际需要在Display中选择显示的build次数即完成

image.png

















猜你喜欢

转载自blog.51cto.com/13944252/2348550