赞
踩
在我们传统的部署方式中,我们需要的流程是首先把我们本地的java程序打包成一个jar文件并且传到我们的服务器当中去,我们可以在maven当中传地址进行远程发送到服务器当中,然后使用vim编辑器进行修改我们的配置然后完成我们的部署,当然我们也可以使用硬件将我们的程序拷到我们的u盘上,然后拷贝到我们的服务器当中,进行一个部署,但是这样传统的部署会产生一个问题,那就是我们传统的部署适合的是单体的项目,当我们在集群条件下或者使用微服务的条件之下,当项目需要多个服务器的时候我们如果还是按照传统的方式进行部署,那就需要一个服务器一个服务器的去进行部署,这样的话会特别的繁琐而且做着重复性的工作(比如说每台的操作流程都一样)那么这样的话我们可以进行一个优化,本文中我们将学习采用Jenkins的方式来进行部署我们的项目
当我们的产品部署到服务器上的时候并不是一成不变的,可能每天都会产生新的代码那就会每天都要向我们的服务器进行提交部署,这种持续的部署我们称之为持续部署
在项目开发中进行单元测试能够通过,但是部署到服务器上运行出现问题,所以仅仅单元测试还不够,各个模块都必须能够在服务器上运行,
持续部署的关注点在于项目功能部署至服务器后可以运行,为下一步测试环节或最终用户正式使用做好准备
当我们做大型的项目的时候我们每一个组都只是负责一部分的模块,本模块独立测试虽然能够通过,但是上线前夕将所有的模块整合到一起集成测试却发现了很多的问题,想要解决这些问题就需要把代码返工并且可能出现仍然有问题的情况,这种耗费时间物力人力显然是不合适的,
想要解决这种问题,就要持续性的把所有的模块集成在一起测试,有问题尽早地发现,这就是持续集成
持续集成的关注点在于尽早发现项目整体运行问题,尽早解决
我们的产品上线之后我们只是从数据方向功能方向进行一个设计,但是用户是否喜欢使用,是否让用户喜欢这个是用户说了算的,所以我们的产品上线之后我们要做的就是不断地小版本之间进行一个迭代,这里边涉及到了运营,产品经理等多方面共同合作的结果,项目的各个升级版本之间间隔时间太长,对用户反馈感知迟钝,无法精确改善用户体验,用户流失严重
我们就要用小版本不断进行快速迭代,不断收集用户反馈信息,用最快的速度改进优化,要持续的更新,持续的迭代,持续的交付,这就是持续交付
持续交付的关注点在于研发团队的最新代码能够尽快让最终用户体验到
降低风险
减少重复过程
任何时间、任何地点生成可部署的软件
增强项目的可见性
目前最流行的一款持续集成化及自动化部署工具
Jenkins和Hundson之间的关系:2009年,甲骨文收购了sun并继承了Hudson代码库。在2011年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目
Jenkins:由大部分原始开发人员组成
Hudson:由甲骨文公司继续管理
所以Jenkins和Hudson是两款非常相似的产品
在大型的项目中,产品上线前的测试会分两步一步称之为SST,用来交由测试进行测试代码(测的是功能是否有问题),还有一个称之为UAT,用户验收测试(测的是用户习惯,比如说开发人员喜欢将删除按钮放在右边而用户喜欢在左边),如果说想产品上线的话,我们只需要将UAT中的代码进行一个打包,这样我们的生产环境是UAT中的包,运行的也是UAT中的包
Jenkins可以整合GitHub或Subversion
Hudson也可以整合GitHub或Subversion
二者既然是同源的工具软件,操作和指导思想就是接近的
Jenkins的下载地址: Jenkins download and deployment
Jenkins是一款流行的开源持续继承(CI)和持续部署(CD)工具,广泛应用于项目开发,它具有自动化构建,测试和部署等功能
开源的Java语言开发持续集成工具,支持持续集成,持续部署。
易于安装部署配置,可通过yum安装,或者可以下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当初构建完成时通过e-mail通知,生成Junit/TestNG测试报告。
分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,例如git,svn,maven,docker等。
1)首先,开发人员每天进行代码提交,提交到Git仓库
2)然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程
3)最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用
在CentOs7中进行安装
yum -y install policycoreutils openssh-server openssh-clients postfix
systemctl enable sshd && sudo systemctl start sshd 管理员密码
systemctl status sshd 查看是否开机自行启动ssh
systemctl enable postfix && systemctl start postfix
systemctl status firewalld 查看当前防火墙是否开启
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
如果关闭防火请就不需要做以上配置
在线下载安装包
Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
rpm -ivh gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
cd /etc/gitlab
vi gitlab.rb
加上端口号 --- 以82举例
按下esc
然后搜索
nginx['listen_port'
:wq 保存退出
gitlab-ctl reconfigure
等待加载成功之后重启服务
gitlab-ctl restart
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
IP地址如果发生了变化那么就用连接的新的ip地址进行登录
第一次登录的时候有一个默认的账户名叫root 我们需要进行添加登录密码 密码为8位 例如我改成root123123
此时证明登录成功!
使用管理员root创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,不同的组就是公司的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理
创建组的目的就是为了更好的管理项目,可以把项目或者说相似的项目创建成一个组,这样再往里添加用户,这些用户就可以有操作这些组的权限,便于管理
点击Create a group 创建组
此时证明组已经创建完成
先不创建密码,密码稍后创建
此时用户成功创建
Guest:可以创建issue、发表评论、不能读写版本库
Reporter:可以克隆代码,不能提交,OA、PM可以赋予这个权限
Developer:可以克隆代码、开发、提交、push、普通开发可以赋予这个权限
Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目、核心开发可以赋予这 个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员、开发组组长 可以赋予这个权限
点击Set new pasword
此时证明创建的用户和组创建成功,并把用户成功添加到了组里面
此时就在我们的根目录下创建了一个本地仓库
提交代码到我们的本地仓库
URL放的是下图http的地址
刷新上图这个页面
出现此页面证明提交成功
创建一个新的linux服务器用来搭建我们的jenkins环境
1) 安装JDK
Jenkins是java编写的它需要依赖JDK,所以我们第一步需要先安装JDK,这里我选择1.8版本
yum install java-1.8.0-openjdk* -y
2) 查看安装的版本
java -version
3) 查看安装目录下的内容
cd /usr/lib/jvm
ll
4) 查看jdk1.8完整的目录
cd java-1.8.0-openjdk
ll
此时jdk安装完毕
安装jenkins
jenkins安装地址
Index of /jenkins/redhat-stable/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
将rpm文件转移到我们的linux系统当中去
此时输入
rpm -ivh jenkins-2.303.1-1.1.noarch.rpm
这个时候会报以下错误
因为没有导入依赖安装包,所以此时需要导入依赖
依赖安装 epel-release
yum -y install epel-release
依赖安装 daemonize
yum -y install daemonize
rpm -ivh jenkins-2.303.1-1.1.noarch.rpm
cd /etc/sysconfig
vi jenkins
systemctl start jenkins
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
输入地址+端口号
让我们在linux的 /var/lib/jenkins/secrets/initialAdminPassword 这个地址中找密码
cat /var/lib/jenkins/secrets/initialAdminPassword
点击选择插件来安装
因为如果我们使用默认的jenkins那么可能会安装好几次还有可能会安装失败,所以先跳过这一个部分在接下来的步骤中进行安装,选择一个国内的地址而且安装的速度还会非常的快
点击保存并完成
点击开始使用jenkins
此时证明jenkins安装成功!
Jenkins本身不提供很多功能我们可以通过使用插件赖满足我们的使用,例如从Gitlab拉取代码,使用Maven构建项目等功能需要依赖插件完成,接下来演示如何下载插件
Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
此时可以看到所有的插件已经被安装好了
查一下下载到本地的插件
cd /var/lib
cd jenkins/
pwd
ll
cd updates/
ll
default.json 里边记录的是jenkins插件中所有的地址
现在我们要把地址进行更改,更改成我们国内的地址
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/http"\/\/www.baidu.com/g' default.json
更换之后点击submit保存
输入 http://192.168.0.128:8888/restart 进行重启
开始重启
搜索框输入Chinese
等待安装
点击一下刷新
汉化插件安装成功!
我们可以利用Role-based Authorization Atrategy 插件来管理Jenkins用户权限
开始安装
安装完成
itcast.* 例如itcast01这样就可以进行访问
此时 现在我们使用这两个用户去登录jenkins是没有任何的菜单显示的,需要分配权限
此时再使用aaa进行登录就可以登录了
但是此时发现这个用户不能看见有与项目相关的东西,所以还要再登回去分配项目相关的权限
将bbb也分配权限
建立两个项目
相同的方式创建一个itht01
此时我们用管理员登录所以可以看见两个项目
现在我们选择aaa进行登录
只能看见itcast
现在我们换bbb进行登录
只能看见itht的项目
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。