jenkins
jenkins
CI/CD
-
持续集成/持续发布
- 开发(git) -->git主库–>jenkins(git+jdk+tomcat+maven打包+测试)–>发布到tomcat服务器
-
jenkins
- Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中。
- Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
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的任务的一次运行。
- 任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合。
-
工作流程图
-
- 开发者检入代码到源代码仓库。
-
-
- CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
- CI系统会在对应的工作区内执行构建过程。
- (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
- (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
- 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:登录密码
- Full Name:jenkinsweb页面登录名称
-
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)jinkens服务器上的maven将开发产生的*.war包。
-
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 [email protected]: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 "[email protected]"
然后将~/.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
- [root@jenkins logs]# tail -f /usr/local/tomcat/logs/catalina.out
-
解决方案:
- 只要在$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上。
-