Jenkins介绍与部署

1. CICD简介

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。

在这里插入图片描述

1.1CI 是什么?CI 和 CD 有什么区别?

缩略词 CI / CD 具有几个不同的含义。CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。
CI/CD 既可能仅指持续集成和持续交付构成的关联环节,也可以指持续集成、持续交付和持续部署这三项构成的关联环节。更为复杂的是,有时“持续交付”也包含了持续部署流程。归根结底,我们没必要纠结于这些语义,您只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。因案例而异,该术语的具体含义取决于 CI/CD 管道的自动化程度。许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化。

1.2 CI 持续集成(Continuous Integration)

现代应用开发的目标是让多位开发人员同时处理同一应用的不同功能。但是,如果企业安排在一天内将所有分支源代码合并在一起(称为“合并日”),最终可能造成工作繁琐、耗时,而且需要手动完成。这是因为当一位独立工作的开发人员对应用进行更改时,有可能会与其他开发人员同时进行的更改发生冲突。如果每个开发人员都自定义自己的本地集成开发环境(IDE),而不是让团队就一个基于云的 IDE 达成一致,那么就会让问题更加雪上加霜。持续集成(CI)可以帮助开发人员更加频繁地(有时甚至每天)将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

1.3 CD 持续交付(Continuous Delivery)

完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

1.4 CD 持续部署(Continuous Deployment)

对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。实际上,持续部署意味着开发人员对应用的更改在编写后的几分钟内就能生效(假设它通过了自动化测试)。这更加便于持续接收和整合用户反馈。总而言之,所有这些 CI/CD 的关联步骤都有助于降低应用的部署风险,因此更便于以小件的方式(而非一次性)发布对应用的更改。不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期投资还是会很大。

在这里插入图片描述

2. 部署Jenkins

//提前下载安装包jenkins.war
[root@localhost ~]# ls
anaconda-ks.cfg  jenkins.war

//安装Java环境
[root@localhost ~]# yum -y install java-1.8.0-openjdk*
[root@localhost ~]# java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

//运行jenkins
[root@localhost ~]# java -jar jenkins.war
Running from: /root/jenkins.war
webroot: $user.home/.jenkins
2020-11-29 07:49:39.135+0000 [id=1] INFO org.eclipse.jetty.util.log.Log#initialized: Logging initialized @526ms to org.eclipse.jetty.util.log.JavaUtilLog...
20-11-29 07:49:45.707+0000 [id=27] INFO jenkins.install.SetupWizard#init: 
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
e09ee09a02fe4c1daecc88c68cb41dd1           //管理员密码
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
2020-11-29 08:30:11.994+0000 [id=27] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization
2020-11-29 08:30:12.007+0000 [id=20] INFO hudson.WebAppMain$3#run: Jenkins is fully up and running
  • 进程运行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 部署tomcat

//提前下载tomcat和maven包
[root@localhost ~]# ls
anaconda-ks.cfg                apache-tomcat-9.0.16.tar.gz
apache-maven-3.6.3-bin.tar.gz  jenkins.war
[root@localhost ~]# tar xf apache-tomcat-9.0.16.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-9.0.16  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share
[root@localhost local]# ln -s apache-tomcat-9.0.16 tomcat
[root@localhost local]# ls
apache-tomcat-9.0.16  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share  tomcat

[root@localhost webapps]# pwd
/usr/local/tomcat/webapps
[root@localhost webapps]# cp ~/jenkins.war .
[root@localhost webapps]# ls
docs  examples  host-manager  jenkins.war  manager  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
Tomcat started.
[root@localhost ~]# 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                *:*     
LISTEN 0       100                          *:8009                *:*     
  • 后台运行

在这里插入图片描述

在这里插入图片描述

  • 全局工具配置
//添加maven
[root@localhost ~]# ls
anaconda-ks.cfg                jenkins.war
apache-maven-3.6.3-bin.tar.gz  tomcat.tar.gz
[root@localhost ~]# tar xf apache-maven-3.6.3-bin.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache-maven-3.6.3    bin  games    lib    libexec  share  tomcat
apache-tomcat-9.0.16  etc  include  lib64  sbin     src
[root@localhost local]# ln -s apache-maven-3.6.3 maven
[root@localhost local]# ls
apache-maven-3.6.3    bin  games    lib    libexec  sbin   src
apache-tomcat-9.0.16  etc  include  lib64  maven    share  tomcat
oot@localhost local]# cd maven/
[root@localhost maven]# ls
bin  boot  conf  lib  LICENSE  NOTICE  README.txt
[root@localhost maven]# ls bin/
m2.conf  mvn  mvn.cmd  mvnDebug  mvnDebug.cmd  mvnyjp
[root@localhost maven]# pwd
/usr/local/maven        //复制此路径

在这里插入图片描述

在这里插入图片描述

  • 插件管理
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 上传插件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 创建用户
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 查看日志

在这里插入图片描述
在这里插入图片描述


版权声明:本文为weixin_47746630原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。