1. CI/CD是什么?
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
自动实现如下图:打包后直接进入服务器,没有容器情况下,脚本和配置文件会越来越多,很乱。
容器化后:打包后进入镜像仓库HARBOR
1.1 持续集成-CI/CD流程图
- 持续集成
持续集成强调对于开发人员的每个提交
,立刻进行构建、扫描、(单元)测试。根据结果,我们可以确定新代码
和原有代码
能否正确地集成在一起。
- 持续交付
持续交付在持续集成的基础上
,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中进行更多的测试来更早地发现问题。
比如,我们完成单元测试后,可以把代码部署到QA环境,预生产,中更多的自动化集成测试。如果代码没有问题,可以继续手动部署到生产环境中
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的
- 持续部署
持续集成脑图
2. jenkins简介
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
功能
Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
特性:
-
开源免费
-
跨平台,支持所有的平台。
-
master/slave支持分布式的build。
-
web形式的可视化的管理页面,操作便捷。
-
安装配置简单,不需数据库支持。
-
tips及时快速的帮助
-
丰富的插件,可以通过插件实现多平台集成。
-
能够实现邮件通知构建结果
3. Jenkins的部署
//安装jdk环境
[root@localhost ~]# yum -y install java-11-openjdk*
//下载tomcat
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.53/bin/apache-tomcat-9.0.53.tar.gz
//解压部署
[root@localhost src]# ls
apache-tomcat-9.0.53.tar.gz debug kernels
[root@localhost src]# tar xf apache-tomcat-9.0.53.tar.gz -C /usr/local/
[root@localhost src]# cd /usr/local/
[root@localhost local]# ln -s apache-tomcat-9.0.53/ tomcat
//启动tomcat
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start
以下操作为Jenkins部署操作
将tomcat的配置web配置文件删除,替换成Jenkins包
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
docs examples host-manager manager ROOT
[root@localhost webapps]# rm -rf docs/ examples/ host-manager/ manager/
[root@localhost webapps]# ls
ROOT
[root@localhost webapps]# rm -rf ROOT/*
[root@localhost webapps]#
//下载jenkins
[root@localhost webapps]# wget http://mirrors.jenkins.io/war-stable/2.303.2/jenkins.war
[root@localhost webapps]# ls
jenkins jenkins.war ROOT
[root@localhost webapps]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost webapps]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
使用ip+端口号+/jenkins(webapps目录下的解压目录) 访问Jenkins web界面
//查看登录密码
[root@localhost webapps]# cat /root/.jenkins/secrets/initialAdminPassword
6341c79406e7459f98818832cb277b5a