精华内容
下载资源
问答
  • Jenkins持续集成从入门到精通.pdf
  • 首先学习架构设计及目标,然后一步步部署这套架构,**结合JAVA项目具体说明如何使用Jenkins实现企业CI(持续集成)/CD(持续部署/交付)及自动化。通过这个企业案例贯穿软件生命周期,学习实现思路及技巧,学完能...
  • 如何使用Jenkins持续集成?难道用例写完还需要人肉操作?
  • Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 提供超过1000个插件来满足任何项目的需要。 该课程主要讲解了以下内容:  ...4. 使用脚本式管道的持续集成部署
  • 主要为大家详细介绍了centos下搭建GitLab+Jenkins持续集成环境,安装jenkins的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 背景:jenkins作为中央调度器,集成java、maven、git、email、html-report环境,搭建 一个自动化测试框架,可性能也可接口;maven负责项目管理,jenkins服务器就不需要安 装jmeter运行环境(错误的,maven项目配置...
  • 自动部署PHP项目的Shell脚本,可用于Jenkins持续集成。 ScriptName:svnExport.sh Todo:自动从SVN配置库导出需要部署的文件,同时打升级包和还原包,可配置自动替换配置文件,自动压缩js文件。 ScriptName:...
  • Jenkins持续集成配置

    2017-09-24 13:37:39
    在Goals and options中,填入需要执行的mvn命令:clean package,Jenkins将执行如下命令: mvn clean package 特殊参数也在这里填写,如-DskipTests=true clean package。 保存后,就可以执行自动化构建了。 点击一...
  • 其中以Jenkins介绍较多,微软也提供一套自动化部署的方式,也有一些其他持续集成工具可以实现自动化的发布,但最终还是选择了Jenkins。主要有以下几个原因:代码开源、插件丰富完善、系统稳定 社区活跃,成功实践和...
  • jenkins 持续集成

    2017-12-02 14:44:18
    jenkins 持续集成 sonar sonarqube sonarRun jenkins 持续集成 sonar sonarqube sonarRun
  • Jenkins持续集成文档

    2018-07-10 12:38:00
    jenkins持续集成部署文档,打通开发、部署,缩短软件开发、部署上线的流程。
  • jenkins持续集成

    2019-03-11 15:41:45
    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 使用说明:解压之后,放到tomcat下运行
  • Jenkins持续集成

    2018-05-05 18:41:04
    1.Jenkins入门 2.Jenkins持续集成 3.Jenkins自动化测试 4.Jenkins集成docker
  • 选择Jenkins任务类型Jenkins提供了四种类型的任务:1)构建一个自由风格的软件项目这是Jenkins的主要功能.Jenkins将会结合任何SCM和任何构建系统来构建你的项目,甚至可以构建软件以外的系统.2)构建一个maven项目构建...
  • 为您提供Jenkins持续集成引擎下载,Jenkins的前身是Hudson是一个可扩展的持续集成引擎。Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、...
  • 接口测试 接口自动化测试框架,Python脚本,可与Jenkins持续集成系统结合。 详细说明请访问: : 。 ps:使用的是Python3
  • jenkins持续集成 – docker-compose 搭建jenkins服务 前提:Linux系统,已安装好docker docker-compose 创建jenkins目录,存放docker-compose.yml jenkins_home [root@centos-linux-10 jenkins] mkdir -p /usr/local...
  • 为您提供Jenkins持续集成引擎下载,Jenkins的前身是Hudson是一个可扩展的持续集成引擎。Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、...
  • 使用Jenkins的插件集成性能测试
  • 为您提供Jenkins持续集成引擎下载,Jenkins的前身是Hudson是一个可扩展的持续集成引擎。Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、...
  • 8.Jenkins持续集成自动化部署二8.Jenkins持续集成自动化部署二
  • 为您提供Jenkins持续集成引擎下载,Jenkins的前身是Hudson是一个可扩展的持续集成引擎。Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、...
  • jmeter+ant+jenkins持续集成

    千次阅读 2021-06-11 09:15:57
    windows(Jmeter+ant+Jenkins) 介绍 ...Jenkins是一款开源的CI/CD软件,因为功能齐全,插件丰富,支持各种运行方式,使用也很简单,是持续集成方面的领导者。 这样一个组合,就能让测试人员把j

    windowsJmeter+ant+Jenkins

    介绍

    jmeter是一个java开发的,apache下的开源工具,常被用于做接口自动化和性能测试工具。因为他开源,入手也非常简单,所以越来越受测试人员青睐

    ant也是用Java开发的,apache下的一个将代码编译、测试、部署等联系在一起加以自动化的开源工具。深受java开发人员欢迎

    Jenkins是一款开源的CI/CD软件,因为功能齐全,插件丰富,支持各种运行方式,使用也很简单,是持续集成方面的领导者

    这样一个组合,就能让测试人员把jmeter编写的接口测试脚本,通过Jenkins持续集成编辑、测试,查看测试结果报告。

    环境配置

    因为,jmeter、ant都是java开发的,所以我们要有java运行环境安装jre或jdk

    安装与配置jdk

    1、下载jdk或jre安装包

    2、安装jdk

    3、打开系统环境变量,在系统变量中,

    ①、新增JAVA_HOME变量,路径为jdk安装路径,

    ②、再在PATH变量值中插入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 

    ③、再在CLASSPATH变量值中插入%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

    保存关闭环境变量窗口,在dos窗口中,输入 java -version, 如果返回了java的版本,说明安装配置成功。

    安装jmeter

    1、下载jmeter包

    2、解压,进入解压路径的 .\bin 文件夹,双击jmeter.bat文件,即可启动jmeter,编写接口测试脚本

    ant安装与配置

    1、下载ant包,解压

    2、打开系统环境变量,添加ANT_HOME 为ant路径, 再$PATH中添加$ANT_HOME/bin

    3、修改jmeterjmeter.properties     jmeter.save.saveservice.output_format=xml

    4jmeterextras文件夹中的ant-jmeter.***.jar  拷贝到 ant的lib文件夹中        用于发邮件

    5、验证环境配置:进入 jmeterextras文件夹下,运行cmd,输入:ant.bat-file build.xml -Dtest=Test

    如果一切成功,说明配置好了,没有成功,就具体问题具体分析

    6、修改build.xml文件

    进入jmeterextras文件夹,找到build.xml文件,修改该文件

    安装jenkins

    1、下载jenkins包,解压,运行msi文件

    2、安装完成后,会自动打开浏览器顾问:localhost:8080地址

    3、按照页面提示,修改密码,安装推荐插件

    4、登录jenkins->进入系统管理->pluginManager管理插件安装AntPlugin和PerformancePlugin 确认是否已经安装

    5、系统管理-> GlobalTool Configuration  配置Ant路径

    6、新建一个任务,选择 freestyle project

    7、在任务的‘构建’中,选择 invoke ant  ,targets要填写build.xml中的 antcall 的值,保存应用

    8、运行任务

    重点难点:

    build.xml配置修改

    project标签: ant的根目录,每个build文件必须包括一个project(Each buildfile contains one project and at least one (default) target)

    name:project的名称

    default: 指定默认执行是的target

    basedir: 指定基路径

    Each project defines one or more targets. A target is a set of tasks you want to be executed. When starting Ant, you can select which target(s) you want to have executed. When no target is given, the project's default is used.

    target节点

    target为ant的基本执行单元,它可以包含一个或多个,多个之间可以存在相互依赖关系

    name: target节点名称

    depends: 依赖的父节点名称

    property:属性

    name:

    value:  值   引用的时候用 ${}

    build文件内容:https://blog.csdn.net/qq_42708085/article/details/117805733?spm=1001.2014.3001.5501

     

     

     

     

     

     

    展开全文
  • 适用于大部分公司的集成部署架构图,大家可以参考下的根据自己情况进行修改的。 只是给各位参考下的,需要根据公司的集成情况进行设计。
  • 本文集成的项目基于Maven构架,所以Maven也必须安装;两者的安装方法请参考我的另一篇文章:Tomcat安装及其单机多实例部署以下四种方法任选一种,推荐第一种。安装并启动Tomcat;从官网下载jenkins.war至$CATALINA_...
  • Jenkins持续集成入门到精通》 1、持续集成及Jenkins介绍 2、Jenkins安装和持续集成环境配置 3、Jenkins构建Maven项目 4、Jenkins+Docker+SpringCloud微服务持续集成 5、基于Kubernetes/K8S构建Jenkins微服务持续...

    《Jenkins持续集成入门到精通》

    1、持续集成及Jenkins介绍
    2、Jenkins安装和持续集成环境配置
    3、Jenkins构建Maven项目
    4、Jenkins+Docker+SpringCloud微服务持续集成
    5、基于Kubernetes/K8S构建Jenkins微服务持续集成平台

    本人已经精通Jenkins,时间问题,没详细写文档,有问题请联系QQ:121214756

     

     

    展开全文
  • Jenkins 持续集成环境搭建

    万次阅读 2021-10-06 13:38:09
    Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。

    文章目录

    一、Jenkins 介绍

      Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
    在这里插入图片描述
    官网地址: http://jenkins-ci.org/

    二、Jenkins 特点

    • 开源的 Java 语言开发持续集成工具,支持持续集成,持续部署。
    • 易于安装部署配置。可通过 yum 安装或下载 war 包以及通过 docker 容器等方式快速实现安装部署,方便 web 界面配置管理。
    • 消息通知及测试报告。集成 RSS/E-mail 通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知,生成 JUnit/TestNG 测试报告。
    • 分布式构建。支持 Jenkins 能够让多台计算机一起构建/测试。
    • 文件识别。Jenkins 能够跟踪哪次构建生成哪些 jar,哪次构建使用哪个版本的 jar 等。
    • 丰富的插件支持。支持扩展插件,你可以开发适合自己团队使用的工具,如 git、svn、maven、docker 等。

    三、Jenkins 安装和持续集成环境配置

    1. 持续集成流程说明

    在这里插入图片描述

    • 首先,开发人员每天进行代码提交,提交到 Git 仓库。
    • 然后,Jenkins 作为持续集成工具,使用 Git 工具到 Git 仓库拉取代码到集成服务器,再配合 JDK,Maven 等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
    • 最后,Jenkins 把生成的 jar 或 war 包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

    2. 测试服务器列表

    名称IP地址安装的软件
    代码托管服务器192.168.10.20Gitlab-12.4.2
    持续集成服务器192.168.10.30Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git,SonarQube
    应用测试服务器192.168.10.40JDK1.8,Tomcat8.5

    3. 各组件介绍

    (1) Gitlab 代码托管服务器

    在这里插入图片描述
    官网: https://about.gitlab.com/

      GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。

      GitLab 和 GitHub 一样属于第三方基于 Git 开发的作品,免费且开源(基于 MIT 协议),与 Github 类似,可以注册用户,任意提交你的代码,添加 SSHKey 等等。不同的是,GitLab 是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把 GitLab 看作个人版的 GitHub。

    (2) 持续集成环境 Jenkins

    在这里插入图片描述

      Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成 。
      Jenkins 用 Java 语言编写,可在 Tomcat 等流行的 servlet 容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有 SVN、GIT,构建工具有 Maven、Ant、Gradle。

    Jenkins 详细教程

    (3) JDK 环境

      JDK 是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的 JAVA 应用程序。JDK 是整个 JAVA 开发的核心,它包含了 JAVA 的运行环境(JVM+Java系统类库)和 JAVA 工具。

    https://baike.baidu.com/item/jdk/1011?fr=aladdin

    (4) Maven

      maven 是一个项目构建和管理的工具,提供了帮助管理、构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。
      maven 的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性。利用 maven 自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
    https://baike.baidu.com/item/Maven/6094909?fr=aladdin

    (5) Tomcat

      tomcat 是一款免费、开放源代码的 Web 应用服务器,是 Apache 软件基金会的一个核心开源项目,属于轻量级应用服务器。Apache 软件基金会是专门为支持开源软件项目而办的一个非盈利性组织。

    tomcat 由一系列的组件构成,其中核心的组件有三个:

    • Web 容器:完成 Web 服务器的功能 HTTP HTTPS 请求的接受和响应。
    • Servlet 容器:由名称为 catalina.sh 的脚本来处理 Servlet 代码(具体的一个任务,从数据库中拿取数据给与前端)。
    • JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码 index.html index.php index.jsp。

    官网为:https://tomcat.apache.org/

    4. 持续集成环境配置

    4.1 Gitlab 安装配置

    安装服务器 192.168.10.20

    (1) 命令行配置

    安装相关依赖

    yum -y install policycoreutils openssh-server openssh-clients postfix
    

    启动 ssh 服务并设置为开机启动

    systemctl enable sshd && sudo systemctl start sshd
    

    启动 postfix 并设置开机自启,postfix 支持 gitlab 发信功能

    systemctl enable postfix && systemctl start postfix
    

    开放 ssh 以及 http 服务,然后重新加载防火墙列表(如果关闭防火墙就不需要做此项配置)

    firewall-cmd --add-service=ssh --permanent
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    

    下载 gitlab 包,并且安装

    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm --no-check-certificate
    rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
    

    修改 gitlab 配置

    vim /etc/gitlab/gitlab.rb
    # 修改 gitlab 访问地址和端口,默认为 80,我们改为 82
    external_url 'http://192.168.10.20:82'
    nginx['listen_port'] = 82
    

    重载配置及启动 gitlab

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

    把端口添加到防火墙

    firewall-cmd --zone=public --add-port=82/tcp --permanent
    firewall-cmd --reload
    

    (2) 用户与组的创建和配置

    启动成功后,看到以下修改管理员 root 密码的页面,修改密码后,然后登录即可
    在这里插入图片描述
    在这里插入图片描述

    ① 创建组
    使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限;
    不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。
    

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

    ② 创建用户
    创建用户的时候,可以选择 Regular 或 Admin 类型
    

    在这里插入图片描述
    创建完用户后立即修改密码
    在这里插入图片描述

    ③ 将用户添加到组中
    选择某个用户组,使用 Members 管理组的成员
    

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

    # Gitlab 用户在组里面有 5 种不同权限:
    Guest:可以创建 issue、发表评论,不能读写版本库。
    Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限。
    Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限。
    Maintainer:可以创建项目、添加 tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限。
    Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限。
    

    实验我们可以赋予 zhangsan 用户最高权限 Owner。

    ④ 在用户组中创建项目

    以刚才创建的新用户身份登录到 Gitlab,然后在用户组中创建新的项目,当然也可以先创建项目,再将用户分配到组里。
    注意:新创建的用户登录时需要重设密码。
    在这里插入图片描述
    在这里插入图片描述

    (3) 推送源码到 Gitlab 仓库

    准备一个简单的 WEB 项目,在 IDLE 里面推送到 Gitlab 服务器。

    cat index.jsp 
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    	<title>演示项目主页</title>
    </head>
    <body>
    看到此页面代表项目部署成功!
    </body>
    </html>
    
    ① 版本控制

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

    ② 提交代码到本地仓库

    先 Add 到缓存区
    在这里插入图片描述
    再 Commit 到本地仓库
    在这里插入图片描述

    ③ 推送到 Gitlab 项目仓库中

    在这里插入图片描述
    这时从 Gitlab 的项目中拷贝 url 地址
    在这里插入图片描述
    输入 gitlab 的用户名和密码,然后就可以将代码推送到远程仓库
    在这里插入图片描述
    刷新 gitlab 项目
    在这里插入图片描述

    4.2 Jenkins 安装及相关配置

    安装服务器 192.168.10.30

    (1) JDK 环境安装

    可 yum 安装也可手动编译安装

    #Jenkins 需要依赖 JDK,所以先安装 JDK1.8
    yum install java-1.8.0-openjdk* -y
    # yum 安装默认目录为:/usr/lib/jvm
    

    (2) Jenkins 安装配置

    注意:这个 Jenkins 版本有点老了,请下载新版,不然很多插件无法下载安装。

    获取 jenkins 安装包 https://jenkins.io/zh/download/

    wget http://mirrors.jenkins-ci.org/redhat/jenkins-2.190-1.1.noarch.rpm
    安装文件:jenkins-2.190.3-1.1.noarch.rpm
    
    # yum 安装
    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    yum -y install epel-release && yum clean all && yum makecache
    yum -y install java-11-openjdk-devel
    yum -y install jenkins
    

    执行安装

    rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
    
    #如果安装的版本太低需要升级,进行如下操作
    rpm -e jenkins
    find / -name jenkins
    rm -rf <jenkins 残留文件>
    浏览器登录时清除一下缓存
    

    修改 Jenkins 配置

    #/etc/syscofig/jenkins 后面还有一个空格,不然打开的是空文件
    vim /etc/syscofig/jenkins
    
    JENKINS_USER="root"
    JENKINS_PORT="8888"
    

    启动 Jenkins

    systemctl start jenkins
    

    打开浏览器访问

    http://192.168.10.30:8888/
    #注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口
    #如果无法打开查看一下进程或者端口,有时候 systemctl 显示 active 却没有服务,重启服务解决
    

    获取并输入 admin 账户密码

    cat /var/lib/jenkins/secrets/initialAdminPassword
    

    跳过插件安装

    因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装
    

    在这里插入图片描述
    在这里插入图片描述
    添加一个管理员账户,并进入 Jenkins 后台
    在这里插入图片描述
    实例配置
    在这里插入图片描述
    开始使用 Jenkins
    在这里插入图片描述
    在这里插入图片描述

    (3) Jenkins 插件管理

      Jenkins 本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从 Gitlab 拉取代码,使用 Maven 构建项目等功能需要依靠插件完成。

    修改 Jenkins 插件下载地址
    Jenkins 国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址 Jenkins->Manage Jenkins->Manage Plugins,点击 Available
    在这里插入图片描述
    将 Jenkins 官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址

    cd /var/lib/jenkins/updates
    # default.json 里记录了所有的插件下载地址
    # 将 default.json 里外网地址改为国内地址
    sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
    sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
    

    最后,Manage Plugins 点击 Advanced,把 Update Site 改为国内插件下载地址

    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    

    在这里插入图片描述
    Sumbit 后,在浏览器输入:http://192.168.10.20:8888/restart ,重启 Jenkins。
    在这里插入图片描述
    我们可以下载一个中文汉化插件测试一下

    Jenkins->Manage Jenkins->Manage Plugins,点击 Available,搜索"Chinese"
    

    在这里插入图片描述
    在这里插入图片描述
    http://192.168.10.20:8888/restart
    在这里插入图片描述

    (4) Jenkins 用户权限管理

    ① 创建角色
    我们可以利用 Role-based Authorization Strategy 插件来管理 Jenkins 用户权限
    #这个安装不需要重启
    

    在这里插入图片描述
    开启权限全局安全配置
    在这里插入图片描述
    授权策略切换为 "Role-Based Strategy",保存
    在这里插入图片描述
    创建角色

    在系统管理页面进入 Manage and Assign Roles
    

    在这里插入图片描述
    在这里插入图片描述
    baseRole:该角色为全局角色。这个角色需要绑定 Overall 下面的 Read 权限,是为了给所有用户绑 定最基本的 Jenkins 访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission。
    role1:该角色为项目角色。使用正则表达式绑定"itcast.*",意思是只能操作itcast开头的项目。
    role2:该角色也为项目角色。绑定"itheima.*",意思是只能操作itheima开头的项目。
    在这里插入图片描述
    在这里插入图片描述

    角色分配完后记得保存
    
    ② 创建用户

    在系统管理页面进入 Manage Users
    在这里插入图片描述
    在这里插入图片描述
    创建两个用户
    在这里插入图片描述

    ③ 给用户分配角色
    新创建的用户需要分配角色,不然登录没有任何的权限
    

    系统管理页面进入 Manage and Assign Roles,点击 Assign Roles

    绑定规则如下:
    eric 用户分别绑定 baseRole 和 role1 角色
    jack 用户分别绑定 baseRole 和 role2 角色
    

    在这里插入图片描述
    用户分配角色后记得保存

    ④ 创建项目测试权限

    以 itcast 管理员账户创建两个项目,分别为 itcast01 和 itheima01

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

    测试登录结果为:
    eric 用户登录,只能看到 itcast01 项目
    jack 用户登录,只能看到 itheima01 项目
    

    (5) Jenkins 凭证管理

    ① 安装凭证插件

      凭据可以用来存储需要密文保护的数据库密码、Gitlab 密码信息、Docker 私有仓库密码等,以便 Jenkins 可以和这些第三方的应用进行交互。

    要在 Jenkins 使用凭证管理功能,需要安装 Credentials Binding 插件
    在这里插入图片描述

    安装成功后会出现凭据菜单,在这里管理所有凭证
    在这里插入图片描述

    > 可以添加的凭证有 5 种:
    Username with password:用户名和密码。
    SSH Username with private key:使用 SSH 用户和密钥。
    Secret file:需要保密的文本文件,使用时 Jenkins 会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的 Secret file 就会被删除。
    Secret text:需要保存的一个加密的文本串,如钉钉机器人或 Github 的 api token。
    Certificate:通过上传证书文件的方式。
    

    常用的凭证类型有:Username with password(用户密码)和 SSH Username with private key(SSH 密钥)

    接下来以使用 Git 工具到 Gitlab 拉取项目源码为例,演示 Jenkins 如何管理 Gitlab 的凭证。

    ② 安装 Git 插件和 Git 工具

    为了让 Jenkins 支持从 Gitlab 拉取源码,需要安装 Git 插件以及在 CentOS7 上安装 Git 工具。

    Git 插件安装:
    在这里插入图片描述
    CentOS7 上安装 Git 工具:

    yum install git -y
    git --version
    
    ③ 用户密码类型

    创建凭证

    在这里插入图片描述
    在这里插入图片描述
    选择 "Username with password" ,输入 Gitlab 的用户名和密码,点击 "确定"。

    测试凭证是否可用:
    创建一个 FreeStyle 项目:新建 Item->FreeStyle Project->确定

    在这里插入图片描述
    找到 "源码管理"->"Git",在 Repository URL 复制 Gitlab 中的项目 URL
    在这里插入图片描述
    在这里插入图片描述
    这时会报错说无法连接仓库!在 Credentials 选择刚刚添加的凭证即可
    在这里插入图片描述
    保存配置后,点击构建 “Build Now” 开始构建项目
    在这里插入图片描述
    在这里插入图片描述
    查看 /var/lib/jenkins/workspace/ 目录,发现已经从 Gitlab 成功拉取了代码到 Jenkins 中。
    在这里插入图片描述

    ④ SSH 密钥类型

    SSH 免密登录示意图
    在这里插入图片描述
    使用 root 用户生成公钥和私钥

    ssh-keygen -t rsa
    

    在 /root/.ssh/ 目录保存了公钥和使用
    在这里插入图片描述

    id_rsa:私钥文件
    id_rsa.pub:公钥文件
    

    把生成的公钥放在 Gitlab 中
    以 root 账户登录->点击头像->Settings->SSH Keys
    复制刚才 id_rsa.pub 文件的内容到这里,点击 "Add Key"
    在这里插入图片描述
    在 Jenkins中 添加凭证,配置私钥
    在 Jenkins 添加一个新的凭证,类型为 "SSH Username with private key",把刚才生成私有文件内容复 制过来
    在这里插入图片描述
    在这里插入图片描述

    ⑤ 测试凭证是否可用

    新建 "test02"项目->源码管理->Git,这次要使用 Gitlab 的 SSH 连接,并且选择 SSH 凭证
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!
    在这里插入图片描述

    (6) Maven 安装和配置

    在 Jenkins 集成服务器上,我们需要安装 Maven 来编译和打包项目。

    先上传 Maven 软件到 192.168.10.20
    http://maven.apache.org/download.cgi

    tar -zxvf apache-maven-3.6.2-bin.tar.gz
    mkdir -p /opt/maven
    mv apache-maven-3.6.2/* /opt/maven
    

    配置环境变量

    vim /etc/profile
    #添加如下配置
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    export MAVEN_HOME=/opt/maven
    export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
    ————————————
    
    source /etc/profile
    mvn -v
    

    全局工具配置关联 JDK 和 Maven

    Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下
    在这里插入图片描述
    Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下
    在这里插入图片描述

    添加 Jenkins 全局变量

    Manage Jenkins->Configure System->Global Properties ,添加三个全局变量

    JAVA_HOME、M2_HOME、PATH+EXTRA
    

    在这里插入图片描述

    修改 Maven 的 settings.xml

    mkdir /root/repo	#创建本地仓库目录
    
    vim /opt/maven/conf/settings.xml
    #本地仓库改为
    /root/repo/
    #添加阿里云私服地址
    alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
    
    ###可使用如下格式
      <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
      </mirror> 
    

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

    测试 Maven 是否配置成功

    使用之前的 gitlab 密码测试项目,修改配置
    在这里插入图片描述
    构建->增加构建步骤->Execute Shell
    在这里插入图片描述
    输入:mvn clean package
    在这里插入图片描述
    再次构建,如果可以把项目打成 war 包,代表 maven 环境配置成功!
    在这里插入图片描述

    (7) Tomcat 安装和配置

    安装 Tomcat8.5
    安装服务器 192.168.10.40

    把 Tomcat 压缩包上传到 192.168.10.40 服务器

    yum install java-1.8.0-openjdk* -y	#因为都装在了一台虚拟机上,JDK 已经安装过了
    tar -vxzf apache-tomcat-8.5.47.tar.gz
    mkdir -p /opt/tomcat 
    mv /root/apache-tomcat-8.5.47/* /opt/tomcat 
    /opt/tomcat/bin/startup.sh 			#启动 tomcat
    http://192.168.10.40/8080			#访问 tomcat 
    

    在这里插入图片描述

    配置 Tomcat 用户角色权限

    默认情况下 Tomcat 是没有配置用户角色权限的

    在这里插入图片描述
    在这里插入图片描述
    但是,后续 Jenkins 部署项目到 tomcat 服务器,需要用到 tomcat 的用户,所以修改 tomcat 以下配置, 添加用户及权限

    vim /opt/tomcat/conf/tomcat-users.xml
    
    <tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <role rolename="manager-script"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,managerscript,tomcat,admin-gui,admin-script"/>
    </tomcat-users>
    

    在这里插入图片描述

    用户和密码都是:tomcat
    为了能够刚才配置的用户登录到 Tomcat,还需要修改以下配置

    vim /opt/tomcat/webapps/manager/META-INF/context.xml
    #将该行注释
    <!--
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
    -->
    

    在这里插入图片描述
    重启 Tomcat,访问测试

    /opt/tomcat/bin/shutdown.sh		#停止
    /opt/tomcat/bin/startup.sh 		#启动
    
    #访问 http://192.168.10.40:8080/manager/html
    #输入 tomcat 和 tomcat
    

    看到如下界面代表成功
    在这里插入图片描述

    4.3 Jenkins 构建 Maven 项目

    (1) Jenkins 构建的项目类型介绍

    Jenkins 中自动构建项目的类型有很多,常用的有以下三种:

    自由风格软件项目(FreeStyle Project)
    Maven 项目(Maven Project)
    流水线项目(Pipeline Project)
    

      每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(个人推荐使用流水线类型,因为灵活度非常高)

    (2) 自由风格项目构建

    自由风格完成项目的集成过程:

    拉取代码->编译->打包->部署
    

    拉取代码

    创建项目
    在这里插入图片描述
    配置源码管理,从 gitlab 拉取代码
    在这里插入图片描述

    编译打包

    构建->添加构建步骤->Executor Shell

    echo "开始编译和打包"
    mvn clean package
    echo "编译和打包结束"
    

    部署
    把项目部署到远程的 Tomcat 里面

    安装 Deploy to container 插件
    Jenkins 本身无法实现远程部署到 Tomcat 的功能,需要安装 Deploy to container 插件实现
    在这里插入图片描述
    添加 Tomcat 用户凭证
    在这里插入图片描述
    添加构建后操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击 "Build Now",开始构建过程
    在这里插入图片描述

    部署成功后,访问项目

    http://192.168.10.40:8080/web_demo-1.0-SNAPSHOT/
    在这里插入图片描述

    代码改动后的持续集成

    IDEA 中源码修改并提交到 gitlab
    在 Jenkins 中项目重新构建
    访问 Tomcat
    

    (3) Maven 项目构建

    安装 Maven Integration 插件

    在这里插入图片描述

    创建 Maven 项目

    在这里插入图片描述

    配置项目

    拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同
    在这里插入图片描述

    (4) Pipeline 流水线项目构建

    ① 概念

      Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

    ② 使用 Pipeline 有以下好处
    代码:Pipeline 以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。 
    持久:无论是计划内的还是计划外的服务器重启,Pipeline 都是可恢复的。 
    可停止:Pipeline 可接收交互式输入,以确定是否继续执行 Pipeline。 
    多功能:Pipeline 支持现实世界中复杂的持续交付要求。它支持 fork/join、循环执行,并行执行任务的功能。 
    可扩展:Pipeline 插件支持其 DSL 的自定义扩展 ,以及与其他插件集成的多个选项。
    
    ③ 如何创建 Jenkins Pipeline
    Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy。
    Pipeline 支持两种语法:Declarative(声明式) 和 Scripted Pipeline(脚本式) 语法。
    Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制 SCM 中直接载入 Jenkinsfile Pipeline 这种方法)。
    
    ④ 安装 Pipeline 插件

    Manage Jenkins->Manage Plugins->可选插件
    在这里插入图片描述
    安装插件后,创建项目的时候多了“流水线”类型
    在这里插入图片描述

    ⑤ Pipeline 语法快速入门

    Declarative 声明式 Pipeline

    创建项目
    在这里插入图片描述
    流水线->选择 HelloWorld 模板
    在这里插入图片描述
    生成内容如下:

    pipeline {
    	agent any
    	
    	stages {
    		stage('Hello') {
    			steps {
    				echo 'Hello World'
    			}
    		}
    	}
    }
    
    ——————————————————————————————————————————
    stages:代表整个流水线的所有执行阶段。通常 stages 只有1个,里面包含多个 stage。
    stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。
    steps:代表一个阶段内需要执行的逻辑。steps 里面是 shell 脚本,git 拉取代码,ssh 远程发布等任意内容。
    

    编写一个简单声明式 Pipeline:

    pipeline {
    	agent any
    	
    	stages {
    		stage('拉取代码') {
    			steps {
    				echo '拉取代码'
    			}
    		}
    		stage('编译构建') {
    			steps {
    				echo '编译构建'
    			}
    		}
    		stage('项目部署') {
    			steps {
    				echo '项目部署'
    			}
    		}
    	}
    }
    

    点击构建,可以看到整个构建过程
    在这里插入图片描述

    Scripted Pipeline 脚本式 Pipeline

    创建项目
    在这里插入图片描述
    这次选择"Scripted Pipeline"
    在这里插入图片描述

    node {
    	def mvnHome
    	stage('Preparation') { // for display purposes
    	
    	}
    	stage('Build') {
    	
    	}
    	stage('Results') {
    	
    	}
    }
    
    ______________________________
    Node(节点):一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,后续讲到 Jenkins 的 Master-Slave 架构的时候用到。
    Stage(阶段):一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如 Build、Test、Deploy,Stage 是一个逻辑分组的概念。
    Step(步骤):Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh 'make',就相当于我们平时 shell 终端中执行 make 命令一样。
    

    编写一个简单的脚本式 Pipeline:

    node {
    	def mvnHome
    	stage('拉取代码') { // for display purposes
    		echo '拉取代码'
    	}
    	stage('编译构建') {
    		echo '编译构建'
    	}
    	stage('项目部署') {
    		echo '项目部署'
    	}
    }
    

    构建结果和声明式一样

    ⑥ 拉取代码
    pipeline {
    	agent any
    	
    	stages {
    		stage('拉取代码') {
    			steps {
    				checkout([$class: 'GitSCM', branches: [[name: '*/master']],doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url:'git@192.168.66.100:itheima_group/web_demo.git']]])
    			}
    		}
    	}
    }
    
    ⑦ 编译打包
    pipeline {
    	agent any
    	
    	stages {
    		stage('拉取代码') {
    			steps {
    				checkout([$class: 'GitSCM', branches: [[name: '*/master']],doGenerateSubmoduleConfigurations: false, extensions: [],submoduleCfg: [],userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url:'git@192.168.66.100:itheima_group/web_demo.git']]])
    			}
    		}
    		stage('编译构建') {
    			steps {
    				sh label: '', script: 'mvn clean package'
    			}
    		}
    	}
    }
    
    ⑧ 部署
    pipeline {
    	agent any
    	
    	stages {
    		stage('拉取代码') {
    			steps {
    				checkout([$class: 'GitSCM', branches: [[name: '*/master']],doGenerateSubmoduleConfigurations: false, extensions: [],submoduleCfg: [],userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url:'git@192.168.66.100:itheima_group/web_demo.git']]])
    				}
    			}
    		stage('编译构建') {
    			steps {
    				sh label: '', script: 'mvn clean package'
    			}
    		}
    		stage('项目部署') {
    			steps {
    				deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984fb1d5a254e434', path: '', url: 'http://192.168.66.102:8080')], contextPath: null,war: 'target/*.war'
    			}
    		}
    	}
    }
    
    ⑨ Pipeline Script from SCM

    刚才我们都是直接在 Jenkins 的 UI 界面编写 Pipeline 代码,这样不方便脚本维护,建议把 Pipeline 脚本放 在项目中(一起进行版本控制)

    在项目根目录建立 Jenkinsfile 文件,把内容复制到该文件中

    在这里插入图片描述
    把 Jenkinsfile 上传到 Gitlab

    在项目中引用该文件

    在这里插入图片描述

    4.4 Jenkins 项目构建细节

    (1) 常用的构建触发器

    Jenkins 内置 4 种构建触发器:

    触发远程构建
    其他工程构建后触发(Build after other projects are build)
    定时构建(Build periodically)
    轮询 SCM(Poll SCM)
    
    ① 触发远程构建

    在这里插入图片描述
    触发构建url:

    http://192.168.10.30:8888/job/web_demo_pipeline/build?token=6666
    
    ② 其他工程构建后触发

    创建 pre_job 流水线工程

    在这里插入图片描述

    配置需要触发的工程

    在这里插入图片描述

    ③ 定时构建

    在这里插入图片描述
    定时字符串从左往右分别为:分 时 日 月 周

    一些定时表达式的例子:

    每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32
    每2个小时构建一次: H H/2 * * *
    每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
    每天中午12点定时构建一次 H 12 * * *
    每天下午18点定时构建一次 H 18 * * *
    在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
    每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38) H H(9-16)/2 * * 1-5
    
    ④ 轮询 SCM

    轮询 SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建
    在这里插入图片描述
    注意:这次构建触发器,Jenkins 会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

    (2) Git hook 自动触发构建

      刚才我们看到在 Jenkins 的内置构建触发器中,轮询 SCM 可以实现 Gitlab 代码更新,项目自动构建,但是该方案的性能不佳。那有没有更好的方案呢? 有的。就是利用 Gitlab 的 webhook 实现代码 push 到仓库,立即触发项目自动构建。
    在这里插入图片描述

    安装 Gitlab Hook 插件

    需要安装两个插件:Gitlab Hook 和 GitLab
    在这里插入图片描述

    Jenkins 设置自动构建

    在这里插入图片描述
    等会需要把生成的 webhook URL 配置到 Gitlab 中。

    Gitlab 配置 webhook

    开启 webhook 功能
    使用 root 账户登录到后台,点击 Admin Area -> Settings -> Network
    勾选 "Allow requests to the local network from web hooks and services"在这里插入图片描述
    在项目添加 webhook
    点击项目->Settings->Integrations
    在这里插入图片描述
    注意:以下设置必须完成,否则会报错!
    Manage Jenkins->Configure System
    在这里插入图片描述

    (3) Jenkins 的参数化构建

      有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时我们可以使用参数化构建。

    Jenkins 支持非常丰富的参数类型
    在这里插入图片描述
    可以通过输入 gitlab 项目的分支名称来部署不同分支项目

    项目创建分支,并推送到 Gitlab 上

    在这里插入图片描述
    新建分支:v1,代码稍微改动下,然后提交到 gitlab 上。这时看到 gitlab 上有一个两个分支:master 和 v1
    在这里插入图片描述

    在 Jenkins 添加字符串类型参数

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

    改动 pipeline 流水线代码

    在这里插入图片描述

    点击 Build with Parameters

    在这里插入图片描述
    输入分支名称,构建即可!构建完成后访问 Tomcat 查看结果

    (4) 配置邮箱服务器发送构建结果

    安装 Email Extension 插件

    在这里插入图片描述

    Jenkins 设置邮箱相关参数

    Manage Jenkins->Configure System
    在这里插入图片描述
    设置邮件参数
    在这里插入图片描述
    设置Jenkins默认邮箱信息
    在这里插入图片描述
    准备邮件内容,在项目根目录编写 email.html,并把文件推送到 Gitlab,内容如下:
    在这里插入图片描述

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
    </head>
    
    <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
    <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sansserif">
    	<tr>
    		<td>(本邮件是程序自动下发的,请勿回复!)</td>
    	</tr>
    	<tr>
    		<td><h2>
    			<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
    		</h2></td>
    	</tr>
    	<tr>
    		<td><br />
    			<b><font color="#0B610B">构建信息</font></b>
    			<hr size="2" width="100%" align="center" /></td>
    	</tr>
    	<tr>
    		<td>
    			<ul>
    				<li>项目名称&nbsp;&nbsp;${PROJECT_NAME}</li>
    				<li>构建编号&nbsp;&nbsp;${BUILD_NUMBER}次构建</li>
    				<li>触发原因:&nbsp;${CAUSE}</li>
    				<li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
    				<li>构建&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
    				<li>工作目录&nbsp;&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
    				<li>项目&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
    			</ul>
    		</td>
    	</tr>
    	<tr>
    		<td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b>
    		<hr size="2" width="100%" align="center" /></td>
    	</tr>
    	<tr>
    		<td>
    			<ul>
    				<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
    			</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br/>",showPaths=true,changesFormat="<pre>[%a]<br/>%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
    		</td>
    	</tr>
    	<tr>
    		<td><b>Failed Test Results</b>
    			<hr size="2" width="100%" align="center" /></td>
    	</tr>
    	<tr>
    		<td><prestyle="font-size: 11pt; font-family: Tahoma, Arial, Helvetica,sans-serif">$FAILED_TESTS</pre>
    			<br /></td>
    	</tr>
    	<tr>
    		<td><b><font color="#0B610B">构建日志 (最后 100):</font></b>
    			<hr size="2" width="100%" align="center" /></td>
    	</tr>
    	<tr>
    		<td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG,maxLines=100}</textarea>
    		</td>
    	</tr>
    </table>
    </body>
    </html>
    

    编写 Jenkinsfile 添加构建后发送邮件

    pipeline {
    	agent any
    	
    	stages {
    		stage('拉取代码') {
    			steps {
    				checkout([$class: 'GitSCM', branches: [[name: '*/master']],doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url:'git@192.168.66.100:itheima_group/web_demo.git']]])
    			}
    		}
    		stage('编译构建') {
    			steps {
    				sh label: '', script: 'mvn clean package'
    			}
    		}
    		stage('项目部署') {
    			steps {
    				deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984fb1d5a254e434', path: '', url: 'http://192.168.66.102:8080')], contextPath: null,war: 'target/*.war'
    			}
    		}
    	}
    	post {
    		always {
    			emailext(
    				subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
    			    body: '${FILE,path="email.html"}',
    			    to: 'xxx@qq.com'
    			)
    		}
    	}
    }
    

    测试
    在这里插入图片描述
    PS:邮件相关全局参数参考列表:
    系统设置->Extended E-mail Notification->Content Token Reference,点击旁边的?号
    在这里插入图片描述

    4.5 Jenkins+SonarQube 代码审查

    (1) 安装 SonarQube

    ① SonaQube 简介

      SonarQube 是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持 java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy 等二十几种编程语言的代码质量管理与检测。
    在这里插入图片描述
    官网:https://www.sonarqube.org/

    ② 环境要求
    软件服务器版本
    JDK192.168.10.301.8
    MySQL192.168.10.305.7
    SonarQube192.168.10.306.7.4
    ③ 安装 SonarQube

    安装 MySQL(过程略)

    安装 SonarQube

    在 MySQL 创建 sonar 数据库
    在这里插入图片描述
    下载 sonar 压缩包
    https://www.sonarqube.org/downloads/

    解压 sonar,并设置权限

    yum -y install unzip
    unzip sonarqube-6.7.4.zip
    mkdir /opt/sonar
    mv sonarqube-6.7.4/* /opt/sonar
    useradd sonar 	#创建 sonar 用户,必须用 sonar 用户启动,否则报错
    chown -R sonar. /opt/sonar 	#更改 sonar 目录及文件权限
    

    修改 sonar 配置文件

    vim /opt/sonarqube-6.7.4/conf/sonar.properties
    # mysql 账户密码根据自己的情况修改
    sonar.jdbc.username=root 
    sonar.jdbc.password=Root@123
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    

    注意:sonar 默认监听 9000 端口,如果 9000 端口被占用,需要更改。

    启动 sonar

    #要以我们刚才创建的用户 sonar 启动
    cd /opt/sonarqube-6.7.4
    su sonar ./bin/linux-x86-64/sonar.sh start 	#启动
    su sonar ./bin/linux-x86-64/sonar.sh status #查看状态
    su sonar ./bin/linux-x86-64/sonar.sh stop 	#停止
    tail -f logs/sonar.logs 	#查看日志
    

    访问 sonar

    http://192.168.10.30:9000/
    

    在这里插入图片描述

    默认账户:admin/admin
    

    创建 token
    在这里插入图片描述
    token 要记下来后面要使用

    (2) 实现代码审查

    在这里插入图片描述

    ① 安装 SonarQube Scanner 插件

    在这里插入图片描述

    ② 添加 SonarQube 凭证

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

    ③ Jenkins 进行 SonarQube 配置

    Manage Jenkins->Configure System->SonarQube servers
    在这里插入图片描述
    Manage Jenkins->Global Tool Configuration
    在这里插入图片描述

    ④ SonaQube 关闭审查结果上传到 SCM 功能

    在这里插入图片描述

    ⑤ 在项目添加 SonaQube 代码审查(非流水线项目)

    添加构建步骤:

    # must be unique in a given SonarQube instance
    sonar.projectKey=web_demo
    # this is the name and version displayed in the SonarQube UI. Was mandatory
    prior to SonarQube 6.1.
    sonar.projectName=web_demo
    sonar.projectVersion=1.0
    # Path is relative to the sonar-project.properties file. Replace "\" by "/" on
    Windows.
    # This property is optional if sonar.modules is set.
    sonar.sources=.
    sonar.exclusions=**/test/**,**/target/**
    sonar.java.source=1.8
    sonar.java.target=1.8
    # Encoding of the source code. Default is default system encoding
    sonar.sourceEncoding=UTF-8
    

    在这里插入图片描述

    ⑥ 在项目添加 SonaQube 代码审查(流水线项目)

    项目根目录下,创建 sonar-project.properties 文件

    在这里插入图片描述

    # must be unique in a given SonarQube instance
    sonar.projectKey=web_demo
    # this is the name and version displayed in the SonarQube UI. Was mandatory
    prior to SonarQube 6.1.
    sonar.projectName=web_demo
    sonar.projectVersion=1.0
    # Path is relative to the sonar-project.properties file. Replace "\" by "/" on
    Windows.
    # This property is optional if sonar.modules is set.
    sonar.sources=.
    sonar.exclusions=**/test/**,**/target/**
    sonar.java.source=1.8
    sonar.java.target=1.8
    # Encoding of the source code. Default is default system encoding
    sonar.sourceEncoding=UTF-8
    

    修改 Jenkinsfile,加入 SonarQube 代码审查阶段

    pipeline {
    	agent any
    	
    	stages {
    		stage('拉取代码') {
    			steps {
    				checkout([$class: 'GitSCM', branches: [[name: '*/master']],doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url:'git@192.168.66.100:itheima_group/web_demo.git']]])
    			}
    		}
    		stage('编译构建') {
    			steps {
    				sh label: '', script: 'mvn clean package'
    			}
    		}
    		stage('SonarQube代码审查') {
    			steps{
    				script {
    					scannerHome = tool 'sonarqube-scanner'
    				}
    				withSonarQubeEnv('sonarqube6.7.4') {
    					sh "${scannerHome}/bin/sonar-scanner"
    				}
    			}
    		}
    		stage('项目部署') {
    			steps {
    				deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984fb1d5a254e434', path: '', url: 'http://192.168.66.102:8080')], contextPath: null,war: 'target/*.war'
    			}
    		}
    	}
    	post {
    		always {
    			emailext(
    				subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
    				body: '${FILE,path="email.html"}',
    				to: '1014671449@qq.com'
    			)
    		}
    	}
    }
    

    到 SonarQube 的 UI 界面查看审查结果

    在这里插入图片描述

    展开全文
  • 基于jenkins持续集成环境的构建传统的项目构建过程 1、 研发部将代码提交到SVN/GIT等代码管理工具中; 2、 研发将负责进行本地打程序包。 3、 研发将负责打的程序包上传到SVN/GIT 4、 运维/测试 从SVN/GIT 下载最新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,324
精华内容 14,529
关键字:

jenkins持续集成