小白架构师学习之路笔记5-快速掌握jenkins核心功能

快速掌握jenkins核心功能

课程概要:

  1. jenkins 概述和环境配置
  2. 基于jenkins实现可持续化集成
  3. jenkins pipeline 核心应用

一、jenkins概述与环境配置

知识点:

  1. 关于可持续化集成
  2. jenkisn概述
  3. 下载安装jenkins
  4. 基础环境配置与常用插件下载

1、关于可持续化集成

什么是可持续化集成?举一个例子

一个开发团队正着手开发一个项目,在需求评审之后由小组长拆成肉感个模块,分给不同的小伙伴去实现。2个星期后各自的模块功能都实现了,大家都很开心。这时是该合在一起提测了把,一提测小组长就傻眼了,写的功能没有一个可以用的,要么公共类冲突,要么配置冲突等,经过上一次教训,小组长变聪明了,在也不等功能开发之后再合并提测了,而是每天集成提测,如果发现冲突当天就要解决,这样子我们一天起码要抽出20%的时间去合并代码解决冲突,可持续化集成就是用来解决这个问题。

可持续集成即 Continuous integration(CI)是一种软件开发实战,即团队开发成员经常集成他们的工作,每次集成都通过自动化构建(包括编译,发布,自动化测试)来验证,从而尽快的发现集成错误,让团队能够更高效的开发软件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8VVyZpt-1574607919619)(E:\架构师\git与svn原理截图\image-20191123140557969.png)]

当我们提交代码到git后 CI就会自动 合并 编译 测试这样我们就用人工去检查 合并代码,大大提高了开发效率

持续集成要点:

  • 统一代码库(git)
  • 统一依赖包管理(nexus)
  • 测试自动化
  • 构建全自动化(maven)
  • 部署自动化
  • 可追踪集成记录

2、jenkins概述

jenkins就是为了满足上述持续集成的要点而设计的一款工具,其主体框架采用java开发,实质内部功能都是由各种插件实现的,由于功能都是插件实现所以极大的提高了系统的扩展性(我们之前学的maven的每一个阶段也是用插件实现的)。其不仅可以满足java系统的集成,也可以实现php等语言的集成发布。通过pipeline插件,用户可以随自己需要定制集成流程。

3、下载安装jenkins

下载:jenkins支持Docker、yum、msi等安装,在这里推荐大家直接选择下载他对应的WAR包进行安装。 https://jenkins.io/zh/download/

启动:下载完成之后直接可以通过jar -jar 命令启动

java -jar jenkins.war --httpPort=8080

也可以将其放到servlet容器(tomact\jetty\jboss)中直接启动,无需过多配置,一切插件化这是jenkins比较优秀的设计。

配置:下载完成之后进入启动页(http://127.0.0.1:8080/) 会有一个 验证过程,验证码存储在 ${user_home}.jenkins\secrets\initialAdminPassword 中,接着就是进入安装插件页,选择默认即可,这个过程稍长。

4、基础环境变量与常用插件下载

在集成的时候,jenkins 用到了 Maven 、Git 所以服务器中必须提前安装好这些环境,具体参照前面的git与maven 课程。

插件下载

更换源 ->系统管理->管理插件->高级 ->升级站点

把:http://updates.jenkins-ci.org/update-center.json

换成:http://mirror.esuni.jp/jenkins/updates/update-center.json

镜像源查询:http://mirrors.jenkins-ci.org/status.html

基本插件列表

插件名称 插件描述
Maven Integration maven 管理插件
Deploy to container 容器部署插件
Pipeline 管道集成插件
Email Extension 邮件通知插件
SSH 用于ssh 通信

二、基于jenkins实现可持续化集成

知识点:

  1. 持续化集成完成的目标
  2. 持续化集成配置
  3. 集成实现原理

1、持续化集成完成目标

需要达到的目标如下:

  1. 自动基于分支构建项目

  2. 构建好的项目自动部署至Tomcat容器

  3. 构建好的项目自动上传至Nexus 私服存档

  4. 保存构建历史记录,并可以下载历史记录

2、持续化集成配置

  1. 新建 mvaen 项目

在这里插入图片描述

  1. 配置checkout 地址和用户

在这里插入图片描述

  1. 编写maven 构建命令(强制更新)

在这里插入图片描述

  1. 自动部署至Tomcat配置

在这里插入图片描述
自动部署的前提条件:

  1. 需要下载 Deploy to container 插件

  2. 设置Tomcat manager 用户和密码,以下配置加入至 Tomcat conf/tomcat-users.xml 中

  3. tomcat webapp 中必须保留 manager 项目

    <role rolename="admin-gui"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <user username="manager" password="manager" roles="manager-gui,manager-script"/>
    <user username="admin" password="admin" roles="admin-gui,manager-gui"/>
    <user username="JolyouLu" password="123" roles="admin-gui,manager-gui"/>
    
  4. 存档配置

    构建后操作添加 Deploy war/ear to a container 项目

在这里插入图片描述

配置setting.xml 用于获取上传至nexus 的权限

添加一个 server id 与 存档配置当中的repository id 相对应。

 <server>
          <id>nexusReleases</id>
          <username>deployment</username>
          <password>deployment123</password>
</server>

3、集成原理

在这里插入图片描述

三、jenkins pipeling 核心应用

知识点:

  1. pipeline 概要

  2. pipeline 基础语法

  3. pipeline Demo演示

1、pipeline 概要

前面我们演示的 使用maven 来进行自动化构建,其流程分别是:构建环境准备==》源码下载 ==》构建 ==》存档 ==》部署。这是一种固化的构建流程,如果你们的需求是多个项目需要进行依赖构建这种复杂的构建场景 时该怎么办?jenkins pipeline 可以做到这一点。

Jenkins从根本上讲是一种支持多种自动化模式的自动化引擎。Pipeline在Jenkins上添加了一套强大的自动化工具,支持从简单的连续集成到全面的连续输送Pipeline的用例。用户可以基于他实现更为复杂的建模场景。

2、pipeling 基础语法

#以下就是一个非常简单的 pipeline 脚本:
pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps { 
                sh 'make' 
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

agent 表示Jenkins应该为Pipeline的这一部分分配一个执行者和工作区。

stage 描述了这条Pipeline的一个阶段。

steps 描述了要在其中运行的步骤 stage

sh 执行给定的shell命令

junit 是由JUnit插件提供的 用于聚合测试报告的Pipeline步骤。

3、pipeline Demo 演示

前提条件

  1. Jenkins 2.x或更高版本

  2. Pipeline插件

可以通过以下任一方式创建基本Pipeline:

  1. 直接在Jenkins网页界面中输入脚本。

  2. 通过创建一个Jenkinsfile可以检入项目的源代码管理库。

用任一方法定义Pipeline的语法是一样的,从项目源码中检入jenkinsfile 文件会更方便一些。

#基于脚本构建 pipeline
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                echo 'Checkout'
        stage('Build') {
            steps {
                echo 'Building'
            }
        }
        stage('test'){
            steps{
                echo 'test'
            }
        }
    }
}
            echo 'Checkout'
    stage('Build') {
        steps {
            echo 'Building'
        }
    }
    stage('test'){
        steps{
            echo 'test'
        }
    }
}

}


发布了33 篇原创文章 · 获赞 22 · 访问量 974

猜你喜欢

转载自blog.csdn.net/weixin_44642403/article/details/103230698