- 1.CI/CD是什么
- 2.jenkins
- 2.1 jenkins是什么
- 2.2 jenkins功能及特性
- 2.3 jenkins部署
持续集成
持续集成(Continuous integration,简称CI),简单来说持续集成就是频繁地(一天多次)将代码集成到主干。
每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。
持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,可以确定新代码和原有代码能否正确地集成在一起。
持续集成的好处:
- 快速发现错误,每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
- 防止分支大幅偏离主干,如果不经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的:
让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
持续集成并不能消除 Bug,而是让它们非常容易的发现和改正。
持续交付
持续交付(Continuous delivery)指的是:频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。
持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续部署
持续部署(Continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的前提是能自动化完成测试、构建、部署等步骤。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
2.jenkins 2.1 jenkins是什么Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
功能作用:
- 持续、自动地构建/测试软件项目。
- 监控一些定时执行的任务。
特性:
- 易于安装:只要把jenkins.war部署到servlet容器,不需要数据库支持。
- 易于配置:所有配置都是通过其提供的web界面实现。
- 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。生成JUnit/TestNG测试报告。
- 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
- 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
打包工具:
- gradler
- ant
- maven
打包工具版本必须一致
jenkins是基于tomcat,首先部署tomcat
//关闭防火墙和selinux [root@localhost ~]# systemctl disable --now firewalld.service Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@localhost ~]# setenforce 0 //安装JAVA环境 [root@localhost ~]# yum -y install java-11-openjdk* //下载tomcat [root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz //解压 [root@localhost ~]# ls anaconda-ks.cfg apache-tomcat-9.0.54.tar.gz [root@localhost ~]# tar xf apache-tomcat-9.0.54.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# ls apache-tomcat-9.0.54 bin etc games include lib lib64 libexec sbin share src [root@localhost local]# mv apache-tomcat-9.0.54/ jenkins //将部署jenkins当作一个项目,把解压后的目录改为项目名 [root@localhost local]# ls bin etc games include jenkins lib lib64 libexec sbin share src //启动 [root@localhost local]# jenkins/bin/catalina.sh start Using CATALINA_base: /usr/local/jenkins Using CATALINA_HOME: /usr/local/jenkins Using CATALINA_TMPDIR: /usr/local/jenkins/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/local/jenkins/bin/bootstrap.jar:/usr/local/jenkins/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started. [root@localhost local]# ss -anltu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 100 *:8080 *:* tcp LISTEN 0 128 [::]:22 [::]:* tcp LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:* #tomcat部署成功 //下载jenkins的war包 [root@localhost ~]# wget https://get.jenkins.io/war-stable/2.303.2/jenkins.war //复制war包到webapps目录下,tomcat自动解压 [root@localhost ~]# ls anaconda-ks.cfg apache-tomcat-9.0.54.tar.gz jenkins.war [root@localhost ~]# cd /usr/local/jenkins/webapps/ [root@localhost webapps]# ls docs examples host-manager manager ROOT [root@localhost webapps]# cp /root/jenkins.war . [root@localhost webapps]# ls docs examples host-manager jenkins.war manager ROOT [root@localhost webapps]# ls docs examples host-manager jenkins jenkins.war manager ROOT
web页面访问webapps/jenkins目录
安装插件
创建管理员用户
配置实例网站链接
部署完成



