CI/CD持续集成与持续交付(二)jenkins环境搭建、项目部署

一、jenkins简介

  • Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
  • 主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。
  • Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
  • 通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

二、CI/CD简介

 CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

  •  CI持续集成:
  •   

  • CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
  •  CD持续交付:

三、jenkins环境部署

首先我们先明确主机id及其功能:

主机名称IP地址功能
server3172.25.254.3作为gitlab服务器
server4172.25.254.4作为jenkins服务器

3.1 环境搭建

此时我们再开一个虚拟机用来安装jenkins: 

jenkins官网下载:Jenkins 的安装和设置

国内镜像站:Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

jenkins要求java8的jdk:

安装jenkins

​ 启动

​ 可以看到jenkins的端口为8080。注:若是提示java版本原理一直启动不了,可以尝试手动安装更高版本的java包,但必须是java8的;或者用旧一点版本的jenkins。

 web端访问jenkins

​ 使用初始密码登陆进来。

换源

此时可以看到我们要进行插件安装,但是官方的安装源特别慢,可以用以下方式查看哪个源比较快:

curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash 

多测试几次,选一个速度快的、稳定的源:

​ 我们通过web来访问是这样的:

 将此链路复制到:

 替换url:

注:在使用这个链路时,是需要证书的

  • mkdir /var/lib/jenkins/update-center-rootCAs
  • wget https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/rootCA/update-center.crt -O /var/lib/jenkins/update-center-rootCAs/update-center.crt
  • chown jenkins.jenkins -R /var/lib/jenkins/update-center-rootCAs 

创建目录,将证书放进去:

​ 设置完成之后,我们重启服务:

此时会在jenkins目录下拉取一个default.json ,这个json文件就是我们从刚刚替换的url上下载下来的。

安装插件

​ 我们选择使用社区推荐的插件:

 安装完成后:

 直接使用admin账户进入:

设置中文

管理插件 --> 安装中文插件:

安装完成后进入系统设置中 Configure System:

此时就变成中文了: 

 更改用户密码

 改完后退出再进来即可。

3.2 项目创建---手动触发

新建任务

 进来之后我们可以在源码管理这里将jenkins和gitlab仓库进行整合。

源码管理

生产环境里,我们的代码托管在gitlab中,现在我们准备把项目代码从仓库中拉过来:

在gitlab中进行git clone:

我们需要在jenkins主机中安装git:

安装完成之后显示没有主机key:

​ 因为我们是以ssh的方式连接,所以一定要有免密。我们在下面添加jenkins证书:

添加jenkins证书

先将server4的公钥添加到gitlab上来:

​ server3 的私钥:

我们将server3 gitlab主机上的私钥放到jenkins上来: 

 我们也可以描述一下我们添加的是什么:

此时git地址就ok了:

​ 在gitlab中可以看到我们项目的主分支名称为 main:

构建触发器

我们可以设置轮询触发,每分钟触发一次:

我们可以设置在构建后简单的执行一个脚本:

然后保存即可。 

触发项目并运行

 接下来我们就可以等着看触发效果,我们也可以点图中红框内的按钮,手动触发:

我们点进工程,可以看到已经触发了一次: 

 点击控制台输出可以看到项目的工作记录:

 可以看到拉取之后执行了我们写的shell命令。

3.3 项目创建---gitlab代码变更触发

显然,每分钟轮询一次是不合理的。我们希望的是gitlab中的代码或者文件一有变更,就直接触发jenkins进行变更。 

安装触发器插件

 我们回到工程配置里,更改触发器,首先我们要安装一个触发器插件:

再回去看我们的触发器,发现触发器选项里多了一项gitlab相关的:

 往下翻,点击高级,点击生成密钥token(一定要点击下面的保存):

gitlab中添加webhook

 返回gitlab,点击 菜单--> 管理员,进入 设置--->网络:

将 允许来自webhook 和服务请求勾选上:

​返回项目中,在 设置---> webhook中,在令牌处将刚刚的token复制过来:

添加成功:

​ 手动push进行测试

 此时gitlab会通知我们的jenkins,jenkins中收到触发后,项目进行构建:

此时收到触发后进行了第二次构建。 

gitlab文件变更进行触发

在server3的project1中进行更改,简单的写一个Dockerfile:

此时gitlab首先上传成功:

​ 在jenkins中也多了构建3:

控制台输出可以看到详细的执行过程:

但是jenkins端,我们还没有进行任何的处理,我们只是单纯的把gitlab和jenkins做了一个整合,在jenkins端我们只是ls了一下,可操作空间还很大。我们接下来可以做在jenkins端写好代码,用Dockerfile文件直接构建镜像。此时整合的逻辑大致为:

用户把代码通过git提交push到gitlab上,然后gitlab触发jenkins的webhook,通知jenkins做构建。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值