持续集成
2025-03-26 21:53:17 0 举报
AI智能生成
持续集成
作者其他创作
大纲/内容
Jenkins介绍
总体介绍
Jenkins是什么?
Jenkins是一个开源软件项目, 是基于java开发的一种CI工具
CI是什么?
概念
Continuous Integration 缩写为 CI 意思是持续集成 (频繁的将代码集成到主干(master))
目的
使产品能够快速迭代, 同时还能保持高质量
核心措施: 代码集成到主干之前, 必须通过所有测试用例, 只要有一个测试用例失败, 就不允许集成到主干
作用
快速发现错误, 每完成一点更新, 就集成到主干
防止分支大幅度偏离主干
CI实践流程
1. 通过Jenkins监控发现被测程序代码是否有更新
2. 拉取被测服务代码并部署到测试环境
3. 自动触发自动化测试代码
4. 测试通过
5. 通知开发人员, 告之将代码合并到主干
Jenkins常用场景
测试环境, 一键部署
安装方式
在线安装
步骤
1.进入 jenkins.war所在目录, 通过 java -jar jenkins.war 启动服务
2.浏览器输入 localhost:8080, 访问jenkins服务
3.输入密码
4.选择推荐安装的插件进行安装, 等待安装完成
5.设置管理员的用户名/密码, 即可使用
离线安装
步骤
1.把.jenkins 文件夹复制到用户目录下
2.进入 jenkins.war所在目录, 通过 java -jar jenkins.war 启动服务
3.浏览器输入 localhost:8080, 访问jenkins服务
4.输入admin/123456 点击登录
插件安装
以allure为例, 掌握插件的安装
1.jenkins 安装 allure 插件
2.jenkins 安装 allure commandline 工具
全局工具配置
1.配置JDK
2.Git
Jenkins持续集成配置
总体介绍
配置过后, 会自动执行一整套流程
1. 自动监测远程仓库的代码更新
2. 自动从 github 下载自动化测试项目代码
3. 自动执行自动化测试 (自动运行 pytest)
4. 自动生成 allure 报告
项目准备
将项目上传到github
获取远程代码
新建jenkins项目
配置General
配置源码管理
运行代码
构建相关内容
小结
当jenkins执行的项目出错了, 如何去配置把邮件发给你?
如何使用jenkins执行构建java项目?
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. 开发者检入代码到源代码仓库。
2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
3. CI系统会在对应的工作区内执行构建过程。
4. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
6. 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
分支主题
目前用不到
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
分支主题
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.查看构建结果
结果路径
分支主题
输出信息
由用户 xulei 启动
构建中 在工作空间 /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
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] --------------------------------
[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
WEB-INF/web.xml
WEB-INF/tomcat-web.xml
${catalina.base}/conf/web.xml
最后重起tomcat,问题解决!
问题2:剩余内存必须大于2G
tomcat启动之前的内存:
分支主题
tomcat启动之后的内存:
分支主题
问题3:插件下载后继续下面初始化完成点开始的时候跳到一个空白页面
解决:点击地址栏左边的后退按钮即可进入正常页面
分支主题
接着上面的错误,返回之后虽然进入正常界面,但是会有如下提示:
分支主题
手动安装这些插件
问题4:脚本权限
分支主题
尝试修改构建后脚本的权限
问题5:构建个人的github库时,缺失pom文件
可以用公共库中拷贝,传到自己的GitHub上。
分支主题
0 条评论
下一页