jenkins # jenkins构建CI_CD

jenkins

jenkins

CI/CD

  • 持续集成/持续发布

    • 开发(git) -->git主库–>jenkins(git+jdk+tomcat+maven打包+测试)–>发布到tomcat服务器
  • jenkins

    • Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
      意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中。

Jenkins

  • Jenkins概述

    • 是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
      

jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。

	- CI

		- 英文全称:Continuous  Integration
中文全称:持续集成工具
持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。

	- SCM

		-     英文全称:Source  Control Management (Software Version Control)
中文全称:源码控制管理软件 版本控制
  • Jenkins目标

    • 是监控软件开发流程
      快速显示问题
      提高开发效率
      过程控制
  • Jenkins特性

    • 易于安装

      • 不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到一个servlet容器中
    • 易于配置

      • 所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置
    • 测试报告

      • 生成JUnit或TestNG的测试报告.集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
    • 文件识别

      • jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
    • 分布式构建

      • 支持Jenkins能够让多台计算机一起构建/测试。
    • 插件支持

      • jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件
    • 任务(Job)和构建(build)

      • 任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合。
        构建:是Jenkins的任务的一次运行。
    • 工作流程图

        1. 开发者检入代码到源代码仓库。
  1. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
  2. CI系统会在对应的工作区内执行构建过程。
  3. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
  4. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
  5. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
    Jenkins就是这么一个CI系统。之前叫做Hudson。

Jenkins实战案例

  • 环境

    • github
    • 192.168.0.115 部署jenkins
    • 192.168.0.109充当tomcat网站服务器
    • 建议使用流量联网
  • 1.部署git

    • 环境

      • 4G内存的CENTOS7-64位一台
    • 1.安装依赖包

      yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
      
    • 2.git官网下载最新版本GIT

      wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
      
    • 3.安装git:

      • 解压并cd到解压目录

        tar xf git-2.9.5.tar.gz    
        
        cd   git-2.9.5/
        
        make prefix=/usr/local/git all
        
        • 编译源码包
        make prefix=/usr/local/git install
        
        • 源码安装
      • 修改环境变量:

        # vim /etc/bashrc 
        
        PATH=$PATH:$HOME/bin:/usr/local/git/bin
        
        • 关于bashrc和profile

          • /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次!!!登录!!!时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

 # source /etc/bashrc

 - 测试是否安装成功:

[root@localhost git-2.9.5]#  git --version
git version 1.8.3.1
  • 2.jdk环境部署

    • 1.下载软件

      • jdk-8u151-linux-x64.tar.gz

        • 注意:不能用jdk9和jdk10
    • 2.解压安装

      tar xvzf jdk-8u151-linux-x64.tar.gz -C /usr/local/
      
      cd /usr/local/
      
      mv jdk1.8.0_151 jdk
      
    • 3.修改环境变量

      #vim  /etc/bashrc
      
      - 追加以下配置
      JAVA_HOME=/usr/local/jdk
      export PATH=$PATH:$JAVA_HOME/bin
      
      
      #source  /etc/bashrc
      
    • 4.测试jdk

      # java -version
      
      java version "1.8.0_151"
      Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
      Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
      
      • 提示

        • 如果系统中已安装java-1.8.0-openjdk。java-1.8.0-openjdk 。java-1.8.0-openjdk请卸载他们。
  • 3.部署maven

    • 1.下载和解压Maven:

      # wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
      
      # tar xvzf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
      
      # mv /usr/local/apache-maven-3.5.3/ /usr/local/maven
      
    • 2.修改环境变量

      - # vim /etc/bashrc
      
        - export M2_HOME=/usr/local/maven
        - export M2=$M2_HOME/bin
        - PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
        - export JAVA_HOME=/usr/local/jdk
        - export PATH
      
      - # source /etc/bashrc
      
    • 3.测试maven

      # mvn -version
      
      Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)
      Maven home: /usr/local/maven
      Java version: 1.8.0_151, vendor: Oracle Corporation
      Java home: /usr/local/jdk/jre
      Default locale: en_US, platform encoding: UTF-8
      OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
      
  • 4.部署tomcat

    • 官网下载tomcat:

      • apache-tomcat-9.0.1.tar.gz
    • 解压部署:

      # tar xvzf apache-tomcat-9.0.1.tar.gz  -C /usr/local/
      
      # mv /usr/local/apache-tomcat-9.0.1/ /usr/local/tomcat
      
    • 定义Tomcat所需环境变量:

      # vim /etc/profile	
      CATALINA_HOME=/usr/local/tomcat
      export CATALINA_HOME
      
      # source /etc/profile
      
    • 启动tomcat:

      #/usr/local/tomcat/bin/startup.sh
      
    • 测试tomcat

      • http://192.168.0.115:8080/
      • 注意服务器地址
    • 关闭tomcat(略):

      #/usr/local/tomcat/bin/shutdown.sh
      
    • 配置tomcat的角色和用户(略):

      • 在tomcat目录conf文件夹下tomcat-users.xml
      <role rolename="manager-gui"/>
      <role rolename="admin"/>
      <role rolename="manager"/>
        <role rolename="manager-script"/>
        <user username="tomcat" password="tomcat" roles="manager-gui,admin,manager,manager-script"/>
      
      • 目前用不到
  • 5.部署Jenkins

    • 1.官网下载jenkins:

      • http://updates.jenkins-ci.org/download/war/2.130
      • 下载最新版
    • 2.部署jenkins.war到tomcat下:

      cp jenkins.war  /usr/local/tomcat/webapps/
      
      • 注释

        • jenkins密码忘了,可以重置它

        • 重置jenkins

          • 关闭tomcat

            # /usr/local/tomcat/bin/shutdown.sh
            # rm -rf /usr/local/tomcat/webapp/jenkins*
            # rm -rf ~/.jenkins*
            # cp jenkins.war  /usr/local/tomcat/webapps/
            
          • 启动tomcat即可访问jenkins

    • 3.启动tomcat: 注意启动tomcat会自动解压webapps下的war包

      # /usr/local/tomcat/bin/startup.sh 
      
      Using CATALINA_BASE:    /usr/local/tomcat
      Using CATALINA_HOME:   /usr/local/tomcat
      Using CATALINA_TMPDIR: /usr/local/tomcat/temp
      Using JRE_HOME:    /usr/local/jdk
      Using CLASSPATH:   /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
      Tomcat started.
      
    • 4.登陆jenkins:

      • http://127.0.0.1:8080/jenkins

      • 添入以下文件密码到上图页面中

        cat /root/.jenkins/secrets/initialAdminPassword
        
        • 注意看自己的。
        • 568436617d584c2b96f19e3de8012d47
        • 点击continue
      • 选择suggested的插件进行下载

      • 等待安装完成。

        • 因为网速原因,插件可能下载失败,没关系,把他们记录下来,比如下图的两个插件,点击继续,进去之后手动重新安装未安装好的插件
        • 也可以重试,继续下载安装。
      • 创建用户

        • Full Name:jenkinsweb页面登录名称
          password:登录密码
      • jenkins的分享地址

      • 前台安装完成

        • 如果这个页面过一会消失了。并且常时间空白。可能需要你登录了。换个浏览器,打开相同的地址就会出现认证页面。
      • 欢迎界面

  • 6.管理插件

    • 简介

      • 我们配置的是 git + maven 方式的 自动化部署 所以git和maven的相关插件是必须的 还有一个ssh用于机器间的文件传送
      • 安装的过程请耐心等待
    • 安装插件Deploy to container:

      • 作用:

        • 支持自动化将代码部署到tomcat容器
      • 安装过程:

        • 系统管理–>插件管理–>可选插件–>过滤Deploy to container–>勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。
      • 安装图示:

        • 进入插件管理

        • 搜索插件并安装

          • 安装完之后,如果勾选了:安装完成后重启jenkins 那么会重启jenkins。
    • 安装插件Maven Integration

      • 作用:

        • jenkins 利用maven编译,打包,所需插件
      • 安装过程:

        • 同第一个插件
    • 安装git相关3个插件

      • 安装过程同第一个插件:

        • GIT plugin

          • GitHub Authentication
          • GitHub Branch Source
          • GitHub Organization Folder
    • 安装插件:Publish Over SSH

      • 安装过程同第一个插件:
  • 7.检查错误配置

    • 左侧:点击“系统管理”

    • 1.如果有“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可

      [root@localhost ~]# head -1 /usr/local/tomcat/conf/server.xml 
      <?xml version="1.0" encoding="UTF-8"?>
      
    • 2.如果有”反向代理设置有误“错误,请忽略

  • 8.Jenkins系统设置

    • 注意

      • 这里没有强调的都设置为默认即可
    • 路径

      • 系统管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目录
    • 图示

      • 1.找到全局配置工具

      • 2.配置jdk目录

        • 配置JDK根目录:注意不能是JDK9.0,切忌
      • 3.配置git目录

      • 4.配置maven并保存

      • 5.汇总截图

    • 关于jenkins 设置中文语言(略)

    • 关于重启jenkins(略)

      • http://192.168.43.114:8080/jenkins/restart
      • http://192.168.43.114:8080/jenkins/exit
      • http://192.168.43.114:8080/jenkins/reload
  • 9.SSH 设置

    • 目的

      • 简介

        • (192.168.0.115)jinkens服务器上的maven将开发产生的*.war包。
          通过SSH自动推送到远程tomcat 服务器上(192.168.0.109)。
          需要手工配置ssh key。配合自动化推送
      • 192.168.0.115是jenkins

      • 192.168.0.109是tomcat网站服务器,代表业务服务器

    • 图示

      • 1.jenkins服务器准备秘钥认证

        ssh-keygen 
        

        一路回车

        ssh-copy-id -i 192.168.0.109
        
        • 注意这里的192.168.0.109是一台tomcat网站服务器。什么都不用安装,接到代码即可。

        • #ssh 192.168.0.109 登录不需要密码即可

      • 2.在jenkins上配置ssh信息

        准备SSH私钥

        [root@localhost ~]# ip a | grep inet
        inet 192.168.0.115/24 brd 192.168.0.255 scope global dynamic ens32
        
        [root@localhost ~]# cat ~/.ssh/id_rsa
        -----BEGIN RSA PRIVATE KEY-----
        MIIEpAIBAAKCAQEAuZ1QvEGtK/sbllkN80urEDm/ggIM4QD9JWmmAPUnpuXMDvOS
        bbbAUvmrneO4QrSRH+2cXZNabn1C26I2Oi0u6a14fU/UtpkXMMSTHVnzGnyC/uCa
        p7r3YaDHYjt1jfVpG0mR+JkuOiLgi+PnbgtNckE+FPQCG9EacActIyDb0gIswvbM
        mq1pvwJQLOSN/AAUllTSigZPqIMdkLLWHoutFkvdAgdUblEMEdl1mztl4xInkRIo
        pxuWWjdo7V1YuAXmHZXjutLiE5OrM6yEdAeHLDs5KoYGar2QBZ9owCoXfN+dNrSi
        XeoFp9RkNmzbkFBWRbh97gLnBxw01lxnaxU+8QIDAQABAoIBAHWDl93YZt71eB3T
        +/UQ7xiytwCEc8rwaVUKckMg8x3DV1IP+6DilxjxYSnxRnNVBpyEPv8vj41sWKvd
        Ix/qA02GukX8CNwiSIBjtBBdJoCaXAUqBkAzKvPwastSgbaCrSzNg1E1CgNcmXV3
        sMoG9d1kWP3DDqK13FsY8AbRgtqN2X7f5zuIFGAHy0AfMiBtmhLCD8wNi7KioRcQ
        hc4U/W+Uc3++/VWPaptJEG5TTqLJ1JClDULCGRS6q+ndneeyYM7U15pFSaQa+ZSq
        MljCybfh+STV9Qq1ErDXKK9UoSkbbFOGdWPm7TrltvPuLwrUzRdangJGnco8vA9/
        Cn1U+MECgYEA5m/IH1UjBz0q7+MEnoCE52R4I7rEyeyLf9M5ebX3lq1iD/a0rPXn
        e6PnS5RfbFmBDKov/xekjtfrI/ta3Lj38dejtzTasEn+4dXITA7HPP8kSEUgRm+c
        Lh4CjkzQKnSJ7TZgDB5w21ZO0li4kBQ2r5gr/Vf9MFaTJCUqxM4vNO0CgYEAzjSe
        201kk5G73Oub2wzR9XEQt0+bAvs7JA9ZvcC9rObQ9FUsUgCD0nR88EGGIjiKkas5
        JUrC5Rzw4Jhp8SqQCVeOk8milP2AwtqGLEjJ6WqLGdJsrFtRYBdhdxNjsilNiNEZ
        97FLAfsgIDT9DmWX77QXN5QkkAL5UWAm787UFZUCgYBUA7E86zdoLj73UxeeClFq
        Y9EBhdi1ng6GPiaYX2Wzg+da1qGs5cLN60Yq4h+gS0mnqmzxXlda1RIf/kZ0buPH
        Qs2nwBdzaqcJA36RbFnrvUInLzzDMXIJxls8Mnk64V5gJBEEmhyfe2oler9fmF8P
        yjVPmsLu2sGuzfY35syDSQKBgQCBkMi8LT3kB28OWjCdC8olOXzyYZ+Z2PgJKWgO
        9bt4l7N1wsrNX6t0omMap2E7wWE4NGj8yKP7SBsGVF5E/aRxakWZENoKWdr9FEe4
        LahI9PwgJnrINbzE7wv7wQAkoxUnwZNaclkaDovaENFsqWM1Z2grMPdkUaoMeqkc
        h031nQKBgQDObARvT8wAmGGtDBMsRjbxdgDEl+KsoREhPw6UME3KKNjmQFVBZBy4
        RzvjFCaXWVtIai2WZq5UrsdqdffctX7fm9fNdqx+fuXBfQzK59e9FfV2z2JpXCMx
        SIdkhf+P+J/bBKDCiAumz9qNkdKaPC5ruAziLKrttB7cH5dsjFy35g==
        -----END RSA PRIVATE KEY-----
        

      [root@localhost ~]#

      • 复制cat出来的所有内容,粘贴到下一步页面上的key中。
      • 进入金jenkins系统设置
      • 粘贴到jenkins
  • 10.新建任务

    • 1.创建任务

    • 2.定义名称和类型

      • 创建名称->选择maven项目->确定
    • 3.设置maven

      • 公有git仓库

        设置描述

        选择版本控制器和仓库地址

        https://github.com/bingyue/easy-springmvc-maven

        注意

        • 如果是私有仓库,这里需要建立credentials身份认证

        • 设置触发器(保持默认)

        • 设置构建(编译打包)

          手动添加Goals and options

          clean package -Dmaven.test.skip=true

        • 构建后操作

          在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工件

          • name

            ssh server 因为之前的配置会默认出现tomcat业务服务器的名字

          • source file

            target/*.war

            构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)

ls /root/.jenkins/jobs/testjob1/builds/target/*.war
- Remove prefix
- 自动删除路径前缀(不需要创建路径前缀)
- Remote directory
- tomcat业务服务器上的路径,需要提前在192.168.0.109(tomcat)上创建该目录。

用来存放网站源代码。(需要后台创建)
mkdir -p /jenkins/war
- Exec command
- tomcat(192.168.0.109)在接收到源码之后的自定义动作。
比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)

# mkdir  /jenkins/sh
# cat  /jenkins/sh/deploy.sh
# cp -r /jenkins/war/*.war   /jenkins
# touch /tmp/aaaaaa.txt
# chmod +x /jenkins/sh/deploy.sh
- 保存即可
- 保存
- 私有git仓库(略)
- 私有仓库源码管理
- 报错:如果是私有库,必须添加一个Credentials
- Failed to connect to repository : Command "/usr/local/git/bin/git -c core.askpass=true ls-remote -h http://www.xxx.com/gitlab/root/test.git HEAD" returned status code 128:
stdout: 
stderr: fatal: Unable to find remote helper for 'http'

或者

Failed to connect to repository : Command "git ls-remote -h git@xxxxx.com:xxx/dev_test.git HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please tryagain. 
Permission denied, please try again. 
Permission denied(publickey,gssapi-keyex,gssapi-with-mic,password). 
fatal: The remote end hung up unexpectedly

原因:没有配置git的ssh key。

解决方法:执行下面的命令,生成key

# ssh-keygen -t rsa -C "admin@example.com"
然后将~/.ssh/目录下的id_rsa.pub中的公钥,放到git的ssh key中。再在Jenkins中创建新的Credentials。类型是SSH Username with private key。Username使用ssh-keygen中用到的邮箱,Private Key中选择“From the Jenkins master ~/.ssh”即可。修改后,问题解决。


- 创建credentials
- 步骤1:
- 在 jenkins 中使用 git 插件从仓库中 pull 代码的时候会要求 jenkins 必须有 pull 权限(尤其是当git开启了ssh认证的时候),在配置 jenkins job 的时候有以下这些方法配置 ssh key:

登陆 jenkins 服务器,切换到 jenkins 用户(wing直接使用的root账户),生成 ssh key,然后把 公钥添加到 git 服务器上.
#su - jenkins //切换到 jenkins HOME 目录
#ssh-keygen -t rsa // 生成 ssh key, 复制 xxx.pub 公钥到 git 服务器上即可.

步骤2:在jenkins界面,依次点击: 
- Credentials -> System -> Add domain: 
 Domain Name:  填写你git服务器的地址,如 github.xxx.com(wing填写的IP地址,127.0.0.1)
 Description: 随便写一点描述,如 This is the Credential for github
- 点击 ok 后,再点击  “adding some credentials?”

进入页面后,可以选择 Username with password 或者 SSH Username with private key, 根据你的情况选择,这里我们选择 Username with private key:
Username: 随便起一个名字,以便在创建 Job 的时候使用该 Credential
Private Key:可以指定文件,也可以使用默认的 ~/.ssh,当然也可以直接将私钥复制粘贴到此处。
Passphrase: 如果你在创建 ssh key 的时候输入了 Passphrase 那就填写相应的Passphrase,为空就不填写
ID: 空
Description: 空
- 点击 ok 后 Credential 就创建好了。
如果你再新建 Job 就可以看到我们的 Credential 选项了:

  • 11.构建任务

    1.立即构建

    2.查看构建结果

    结果路径

    输出信息

由用户 xu启动
构建中 在工作空间 /root/.jenkins/workspace/testjob1 中
/usr/local/git/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
/usr/local/git/bin/git config remote.origin.url https://github.com/bingyue/easy-springmvc-maven.git # timeout=10
Fetching upstream changes from https://github.com/bingyue/easy-springmvc-maven.git
/usr/local/git/bin/git --version # timeout=10
/usr/local/git/bin/git fetch --tags --progress https://github.com/bingyue/easy-springmvc-maven.git +refs/heads/*:refs/remotes/origin/*
/usr/local/git/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
/usr/local/git/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 67604f7f9f30505e3bb3e8935c745154f04aa372 (refs/remotes/origin/master)
/usr/local/git/bin/git config core.sparsecheckout # timeout=10
/usr/local/git/bin/git checkout -f 67604f7f9f30505e3bb3e8935c745154f04aa372
Commit message: "修改standard/1.1.2的依赖"
/usr/local/git/bin/git rev-list --no-walk 67604f7f9f30505e3bb3e8935c745154f04aa372 # timeout=10
Parsing POMs
Established TCP socket on 40696
[testjob1] $ /usr/local/jdk/bin/java -cp /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.12-alpha-1.jar:/usr/local/maven/boot/plexus-classworlds-2.5.2.jar:/usr/local/maven/conf/logging jenkins.maven3.agent.Maven35Main /usr/local/maven/ /usr/local/tomcat/webapps/jenkins/WEB-INF/lib/remoting-3.20.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.12-alpha-1.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.12-alpha-1.jar 40696
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven:  -B -f /root/.jenkins/workspace/testjob1/pom.xml clean package -Dmaven.test.skip=true
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for springmvc-maven:easy-springmvc-maven:war:0.0.1-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ line 22, column 15
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] 
[INFO] ----------------< springmvc-maven:easy-springmvc-maven >----------------
[INFO] Building springmvc-maven 0.0.1-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ easy-springmvc-maven ---
[INFO] Deleting /root/.jenkins/workspace/testjob1/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ easy-springmvc-maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/testjob1/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ easy-springmvc-maven ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /root/.jenkins/workspace/testjob1/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ easy-springmvc-maven ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ easy-springmvc-maven ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ easy-springmvc-maven ---
[INFO] Tests are skipped.
[WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.BuildInfoRecorder$1; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/
[INFO] 
[INFO] --- maven-war-plugin:2.2:war (default-war) @ easy-springmvc-maven ---
[INFO] Packaging webapp
[INFO] Assembling webapp [easy-springmvc-maven] in [/root/.jenkins/workspace/testjob1/target/easy-springmvc-maven]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/.jenkins/workspace/testjob1/src/main/webapp]
[INFO] Webapp assembled in [127 msecs]
[INFO] Building war: /root/.jenkins/workspace/testjob1/target/easy-springmvc-maven.war
[INFO] WEB-INF/web.xml already added, skipping
[WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.MavenArtifactArchiver$2; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/
[WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.MavenFingerprinter$1; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.358 s
[INFO] Finished at: 2018-06-18T03:39:25+08:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /root/.jenkins/workspace/testjob1/pom.xml to springmvc-maven/easy-springmvc-maven/0.0.1-SNAPSHOT/easy-springmvc-maven-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /root/.jenkins/workspace/testjob1/target/easy-springmvc-maven.war to springmvc-maven/easy-springmvc-maven/0.0.1-SNAPSHOT/easy-springmvc-maven-0.0.1-SNAPSHOT.war
channel stopped
SSH: Connecting from host [localhost.localdomain]
SSH: Connecting with configuration [tomcat] ...
SSH: EXEC: STDOUT/STDERR from command [/jenkins/sh/deploy.sh] ...
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [tomcat] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS
- 3.观察tomcat网站服务器,代码和脚本
- [root@localhost ~]# ls /jenkins/
easy-springmvc-maven.war  sh  war
[root@localhost ~]# ls /tmp/aaaaaa.txt 
/tmp/aaaaaa.txt
- easy-springmvc-maven.war 就是推送过来的网站源码了
  • 12.排错

    • 问题1:jenkins访问一直处于等待状态

      • tomcat日志显示如下信息:

        • [root@jenkins logs]# tail -f /usr/local/tomcat/logs/catalina.out
          WARNING [Handling GET /jenkins/login from 10.0.0.174 : http-nio-8080-exec-3 HudsonIsLoading/index.jelly] org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [/WEB-INF/classes/lib/layout/breadcrumbs.jelly] to the cache for web application [/jenkins] because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
      • 解决方案:

        • 只要在$CATALINA_BASE/conf/context.xml里增加资源最大可缓存的大小就行了,大小可按自己的需要定义
    # vim /usr/local/tomcat/conf/context.xml 
    <Context>
    
    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <Resources
        cachingAllowed="true"
        cacheMaxSize="100000"
    />
    </Context>
    
    最后重起tomcat,问题解决!
    
    • 问题2:剩余内存必须大于2G

      • tomcat启动之前的内存:

      • tomcat启动之后的内存:

    • 问题3:插件下载后继续下面初始化完成点开始的时候跳到一个空白页面

      • 解决:点击地址栏左边的后退按钮即可进入正常页面

        • 接着上面的错误,返回之后虽然进入正常界面,但是会有如下提示:

        • 手动安装这些插件

    • 问题4:脚本权限

      • 尝试修改构建后脚本的权限
    • 问题5:构建个人的github库时,缺失pom文件

      • 可以用公共库中拷贝,传到自己的GitHub上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值