CI/CD
CI:持续集成(CONTINUOUS INTEGRATION) 它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
CD:持续交付(CONTINUOUS DELIVERY) 通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
CD:持续部署(CONTINUOUS DEPLOYMENT) 指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。 总结:CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。该术语的具体含义取决于 CI/CD 管道的自动化程度。
Jenkins介绍
- Jenkins是一个独立的开源自动化服务器,可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
- Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
- 简单点说:Jenkins其实就是大的框架集,可以整个任何你想整合的内容,实现公司的整个持续集成体系!如:自动化,性能,打包,部署,发布&发布结果自动化验证,接口测试,单元测试
Jenkins可自由部署在各平台:Windows, Linux, Mac
传统网站部署流程: 在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确认上线->备份数据->外网更新->外网测试->发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码;如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。 手动上线步骤: 开发人员发起代码上线的需求(邮件中包含开发做好的WAR包)-)运维人员连接线上负载调度器(Nginx)–>隔离一组服务器(Tomcat)–>连接服务器(Tomcat)–>备份旧代码(tar打包)–>删除旧代码目录–>上传新的WAR包–>外网测试–>测试不通过则通过备份回滚代码–>测试通过则利用rsync的脚本推送代码到其他服务器–>统一外网测试->连接调度器恢复隔离机制–>隔离另一组服务器实施上线步骤–>上线完成。
目前主流网站部署流程 通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVI、Git仓库即可。 运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。 测试人员:可以通过Jenkins进行简单的代码及网站测试
jenkins的部署
部署tomcat
[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 -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install java-11-openjdk* vim wget #java环境安装
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget https:
root@localhost ~]# tar xf /usr/src/apache-tomcat-9.0.54.tar.gz -C /usr/local/
[root@localhost ~]# ls /usr/local/
apache-tomcat-9.0.54 bin etc games include lib lib64 libexec sbin share src
[root@localhost ~]# ln -sv /usr/local/apache-tomcat-9.0.54/ /usr/local/tomcat
'tomcat' -> 'apache-tomcat-9.0.54/'
[root@localhost ~]# /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 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
下载jenkins
[root@localhost ~]# wget https:
[root@localhost ~]# ls
anaconda-ks.cfg jenkins.war
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# rm -rf docs examples host-manager test manager
[root@localhost webapps]# ls
ROOT
[root@localhost webapps]# cp ~/jenkins.war .
[root@localhost webapps]# ls
jenkins.war ROOT
[root@localhost webapps]# ls
jenkins jenkins.war ROOT
//查看管理员密码
[root@localhost webapps]
d95044e105e74317a36f97cc55865703
|