Jenkins
一、Jenkins概述
1、CI/CD
持续集成/持续发布
开发(git)-->git主库-->
jenkins(git+jdk+tomcat+maven打包+测试)-->发布到tomcat服务器
2、jenkins
Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中。
3、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)
中文全称:源码控制管理软件 版本控制
4、Jenkins目标
是监控软件开发流程
快速显示问题
提高开发效率
过程控制
5、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实战案例
1、环境准备:
centos7.x:10.10.10.11:githubcentos7.x:10.10.10.11:#部署jenkinscentos7.x:10.10.10.12:#充当tomcat网站服务器#建议使用公网环境
2、部署Git:centos7.x:10.10.10.11:GitHub下部署
#1.部署git#环境:4G内存的CENTOS7-64位一台#1.安装依赖包[root@server11 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y# 2.git官网下载最新版本GIT[root@server11 ~]#wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz // 使用提供的安装包即可。#3.安装git:// 解压并cd到解压目录[root@server11 ~]# tar -zxvf git-2.9.5.tar.gz[root@server11 ~]# cd git-2.9.5/[root@server11 git-2.9.5]# make prefix=/usr/local/git all # 编译源码包[root@server11 git-2.9.5]# make prefix=/usr/local/git install # 源码安装#修改环境变量:[root@server11 ~]# vim /etc/bashrcPATH=$PATH:$HOME/bin:/usr/local/git/bin[root@server11 ~]#关于bashrc和profile#/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次!!!登录!!!时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置.#/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.[root@server11 ~]# source /etc/bashrc#测试是否安装成功:[root@server11 ~]# git --versiongit version 1.8.3.1
2、JDK环境部署
#2.jdk环境部署#1.下载软件// jdk-8u151-linux-x64.tar.gz// 注意:不能用jdk9和jdk10#2.解压安装[root@server11 ~]# tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/[root@server11 ~]# cd /usr/local/[root@server11 local]# mv jdk1.8.0_151 jdk#3.修改环境变量[root@server11 ~]# vim /etc/bashrc #追加以下配置JAVA_HOME=/usr/local/jdkexport PATH=$PATH:$JAVA_HOME/bin[root@server11 ~]# source /etc/bashrc#4.测试jdk[root@server11 local]# java -versionjava 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
#3.部署maven#1.下载和解压Maven:[root@server11 ~]# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz[root@server11 ~]# tar xvzf apache-maven-3.5.3-bin.tar.gz -C /usr/local/[root@server11 ~]# mv /usr/local/apache-maven-3.5.3/ /usr/local/maven#2.修改环境变量[root@server11 ~]# vim /etc/bashrcexport M2_HOME=/usr/local/mavenexport M2=$M2_HOME/binPATH=$M2:$PATH:$HOME/bin:/usr/local/git/binexport JAVA_HOME=/usr/local/jdkexport PATH[root@server11 ~]# source /etc/bashrc#3.测试maven[root@server11 ~]# mvn -versionApache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)Maven home: /usr/local/mavenJava version: 1.8.0_151, vendor: Oracle CorporationJava home: /usr/local/jdk/jreDefault locale: en_US, platform encoding: UTF-8OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
4、部署tomcat
#4.部署tomcat#官网下载tomcat:apache-tomcat-9.0.1.tar.gz#解压部署:[root@server11 ~]# tar -zxvf apache-tomcat-9.0.1.tar.gz -C /usr/local/[root@server11 ~]# mv /usr/local/apache-tomcat-9.0.1/ /usr/local/tomcat#定义Tomcat所需环境变量:[root@server12 ~]# vim /etc/profile #/etc/bashrc这两个目录都可以CATALINA_HOME=/usr/local/tomcatexport CATALINA_HOME[root@server11 ~]# source /etc/profile#启动tomcat:[root@server11 ~]# /usr/local/tomcat/bin/startup.shUsing CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdkUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.#测试tomcathttp://10.10.10.11:8080/ #可以查看到tomcat的主页面,说明tomcat部署成功了// 注意服务器地址# 关闭tomcat(略):[root@server11 ~]# /usr/local/tomcat/bin/shutdown.shUsing CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdkUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar#配置tomcat的角色和用户(略): #可以不做,直接用root操作// 在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
#5.部署Jenkins#1.官网下载jenkins:http://updates.jenkins-ci.org/download/war/2.130// 下载最新版#2.部署jenkins.war到tomcat下:[root@server11 ~]# cp jenkins.war /usr/local/tomcat/webapps/// 注释#jenkins密码忘了,可以重置它#重置jenkins#关闭tomcat[root@server11 ~]# /usr/local/tomcat/bin/shutdown.sh[root@server11 ~]# rm -rf /usr/local/tomcat/webapp/jenkins*[root@server11 ~]# rm -rf ~/.jenkins*[root@server11 ~]# cp jenkins.war /usr/local/tomcat/webapps/// 启动tomcat即可访问jenkins#3.启动tomcat: 注意启动tomcat会自动解压webapps下的war包[root@server11 ~]# /usr/local/tomcat/bin/startup.shUsing CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdkUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.
5.4、登陆jenkins:http://10.10.10.11:8080/jenkins/:准备工作


找到管理员密码
#添入以下文件密码到上图页面中[root@server11 ~]# cat /root/.jenkins/secrets/initialAdminPasswordb1a9d328f9fc41e594158124eff03bbb// 点击continue

选择suggested的插件进行下载——>安装推荐的插件

等待安装完成。
因为网速原因,插件可能下载失败,没关系,把他们记录下来,比如下图的两个插件,点击继续,进去之后手动重新安装未安装好的插件
也可以重试,继续下载安装。
创建用户
Full Name:jenkinsweb #页面登录名称password:123456 #登录密码

使用admin账户并继续

jenkins的分享地址:保存并完成

前台安装完成;安装完成有有些插件需要重启才可以生效。
如果这个页面过一会消失了。并且常时间空白。可能需要你登录了。换个浏览器,打开相同的地址就会出现认证页面。
欢迎界面

管理员账户及密码:admin 密码:b1a9d328f9fc41e594158124eff03bbb

6、管理插件
6.1、简介
我们配置的是 git + maven 方式的 自动化部署 所以git和maven的相关插件是必须的 还有一个ssh用于机器间的文件传送
安装的过程请耐心等待
6.2、安装插件Deploy to container:
作用:支持自动化将代码部署到tomcat容器
安装过程:系统管理-->插件管理-->可选插件-->过滤Deploy to container-->勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。
安装图示:
进入插件管理

搜索插件并安装

安装完之后,如果勾选了:安装完成后重启jenkins 那么会重启jenkins。
6.3、安装插件Maven Integration
作用:jenkins 利用maven编译,打包,所需插件
安装过程:同第一个插件
6.4、安装git相关3个插件、安装过程同第一个插件:GIT plugin
GitHub AuthenticationGitHub Branch SourceGitHub Organization Folder

安装插件:Publish Over SSH
安装过程同第一个插件:

7、检查错误配置
#左侧:点击“系统管理”#1.如果有“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可[root@server11 ~]# head -1 /usr/local/tomcat/conf/server.xml<?xml version="1.0" encoding="UTF-8"?>#2.如果有”反向代理设置有误“错误,请忽略
8.Jenkins系统设置
注意: 这里没有强调的都设置为默认即可
路径: 系统管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目录
8.1.找到全局配置工具

8.2.配置jdk目录

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

8. 4.配置maven并保存

8.5.汇总截图


8.6、关于jenkins 设置中文语言:插件Locale plugin(略)

系统管理——>系统设置
8.7、关于重启jenkins(略)
http://10.10.10.11:8080/jenkins/restart #重启http://10.10.10.11:8080/jenkins/exit #退出http://10.10.10.11:8080/jenkins/reload #重置不重启
9、SSH 设置
9.1、目的、简介:
# 10.10.10.11:jinkens服务器上的maven将开发产生的*.war包。# 通过SSH自动推送到远程tomcat 服务器上(10.10.10.12)。# 需要手工配置ssh key。配合自动化推送# 10.10.10.11是jenkins# 10.10.10.12是tomcat网站服务器,代表业务服务器
9.1.1.jenkins服务器准备秘钥认证
# jenkins服务器准备秘钥认证[root@server11 ~]# ssh-keygen#一路回车[root@server11 ~]# ssh-copy-id -i 10.10.10.12#注意这里的10.10.10.12是一台tomcat网站服务器。什么都不用安装,接到代码即可。#ssh 10.10.10.12 登录不需要密码即可[root@server11 ~]# ssh root@10.10.10.12Last login:Wed Mar 24 22:50:52 2021 from 10.10.10.240
9.1.2.在jenkins上配置ssh信息
# 准备SSH私钥[root@server11 ~]# ip a | grep inetinet6 ::1/128 scope hostinet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute ens33inet6 fe80::820d:b26d:3507:5834/64 scope link noprefixrouteinet 10.10.10.11/24 brd 10.10.10.255 scope global noprefixroute ens34[root@server11 ~]# cat ~/.ssh/id_rsa-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCAQEAw2UYT5yZwOpcd3MysJ37xolS/IQVpFcqs5mCfINFKn7fcbsFKeX7KTqmNWfO3YUtKBVaDlDL9fmVSTpPY0OL5Ss53MWUTD7KV8bEYEYmXv6y2BSJ+WdBFF819pKymBQSK8xBpEjC7TI8xJ6uuBU7dJx2FVPovaXLTNkYrKWTjMFx2tkzQQePxm/Z2su4Euco2qepqM3F35UD48JL8SOmz8goXpjcky5QLZNUlbYXti+SFbwVxJurVDu/2q1GPSKfZxWLPksdwxGuiNS6ChdhbHLDTJ1X+dhEgcvWcrJ7NRBtbShaCzoRzdEbNgVx6pILy0X8NMuOQoN+8Q1ggc+ZcwIDAQABAoIBAESbI30YjDfbUhoy3ZJ79iJQp024huzMGlczSEi1wrxYDdaeBwMeGCDy0dcgmtbW4vMXBCbQoby9JHiwu50r41vU4J0u1pIq3dsSFHOFTgW+wkbydzuV0Jj5kTYBbinNqk+siUPItICaShHzcX97HQQlx6RXcPnd09MoyuwbuwIJcQHLjMbIs9LTjGJTKzNbVGc58CXNVybajKrlv4x3zVqCflUHYHVC8qT3Q8G03BtEznQJpiJiFhyfpekK6+2/PEjHp2yto8XpcXDLkMA2muIUihRlT7wIqm5Pj9Olrud6xlPvLJKaGfJ3mmJALm5zb+n0vu+2d/NFvlylOOgPjlkCgYEA4kqZSUHBTBJfGAvnFUa9l7gaM0fMColFPZ5GHQpd1HZM/38l7XHf4S7GSAWJH+shT+vZ97yjvvxBVPeVkNggY2BQpdbQHc5VNGEeXdFe1sx/K2jP0ux83J8xHerPjbDMLa4iJNVKE7R5H5xlbOPWAqvZNBRzuKNWzPSw0Xu40T0CgYEA3QwZb+Ja318INewih7xCOQ0fL6X6H2qhIGykD9DDa676syFEtC6hN3LWQKxtNNisfnl+Urgkr2dM1mos9TY/gAi6UzG7/NtpvzTAO7do4nYJ3TBcivHUPdrRHwB89cIxS0C3Gkd/HG5M0Jponr8AUUl4dAPvqaLOBkx3jZ5uYG8CfwqbdJP6gRUPx2VZKXvV1Q1Hk/LTar0TsisxQBgcZEmRQgq36w82R0hG6QR3PfZBD06vv4fdT8+kA2v4LwqbFumRmjYr25WKFnReGQ5MwiVPcKaYQyWf8DpnO+YrG4+IuglqIC+Zz98clpDkw9xW0bFOXOAUFViST39L+P3YztECgYEAxCiukhk/JyZANQneArJP2i0I1dHmyuZnIk0GsnpCUVcwZrJJM9SFgJ1KAI6DQvhc6seKEIIVHAsBpu0GBH0lkMst/hIOju9vQhzf0p6KVx0E1+LI3QyJmnKKTYazXav87pj5ZDq6VFKVnDDKUsWQ1JHscJfloJY3WmOVXHmR3cUCgYEAgBek/YctHD4nwaqmeBSZnzXID/TzArlnkM/CVSIJoNZ2fs/ew/qOQmNI8CS7rlSWKcNbbTAE/E/Af5Rra3t7fBzTF88ubzmGCMNcxuehLdEySclbjRRuhwTqQpJiGU2Y3MN4FEoGKy/pmzBSCCsuIo8V07C2rcz15M7dFrQt4lg=-----END RSA PRIVATE KEY-----# 复制cat出来的所有内容,粘贴到下一步页面上的key中。
进入jenkins——>系统管理——>系统设置——>粘贴到jenkins.Key——>END

10.新建任务
1.创建任务:Dashboard——>新建任务——>

2.定义名称和类型
创建名称->选择maven项目->确定

3.设置maven
公有git仓库——>设置描述——>

选择版本控制器和仓库地址
https://github.com/bingyue/easy-springmvc-maven.git

注意:如果是私有仓库,这里需要建立credentials身份认证
设置触发器(保持默认)

设置构建(编译打包)
手动添加Goals and options
clean package -Dmaven.test.skip=true

构建后操作
在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工件 点击-》增加构建后操作

#说明name:tomcat #因为之前的配置会默认出现tomcat业务服务器的名字#source file target/*.war#构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)[root@server11 ~]# ls /root/.jenkins/jobs/yanqitest/builds/target/*.warRemove prefix #自动删除路径前缀(不需要创建路径前缀)Remote directory#tomcat业务服务器上的路径,需要提前在10.10.10.12(tomcat)上创建该目录。用来存放网站源代码。(需要后台创建)#创建文件夹[root@server12 ~]# mkdir -p /jenkins/war[root@server12 ~]# ll /jenkins/war/total 0Exec commandtomcat(10.10.10.12) #在接收到源码之后的自定义动作。#比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)[root@server12 ~]# mkdir /jenkins/sh[root@server12 ~]# vim /jenkins/sh/deploy.sh#!/bin/bashtouch /root/www.yanqi.com[root@server12 ~]# chmod +x /jenkins/sh/deploy.sh#保存即可
——>实验环境略<——
私有git仓库(略):私有仓库源码管理:如果是私有仓库:地址要这样写

#报错:如果是私有库,必须添加一个CredentialsFailed 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。#解决方法:执行下面的命令,生成keyssh-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、构建任务
11.1、立即构建

11.2、查看构建结果:结果路径

输出信息
#控制台输出#由用户 admin 启动Running as SYSTEM#构建中 在工作空间 /root/.jenkins/workspace/yanqitest 中The recommended git tool is: NONENo credentials specified> /usr/local/git/bin/git rev-parse --is-inside-work-tree # timeout=10Fetching changes from the remote Git repository> /usr/local/git/bin/git config remote.origin.url https://github.com/yanqivip/Jenkins.git # timeout=10Fetching upstream changes from https://github.com/yanqivip/Jenkins.git> /usr/local/git/bin/git --version # timeout=10> git --version # 'git version 2.9.5'> /usr/local/git/bin/git fetch --tags --progress -- https://github.com/yanqivip/Jenkins.git +refs/heads/*:refs/remotes/origin/* # timeout=10> /usr/local/git/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10Checking 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 # timeout=10Commit message: "修改standard/1.1.2的依赖"First time build. Skipping changelog.Parsing POMsDiscovered a new module springmvc-maven:easy-springmvc-maven springmvc-mavenModules changed, recalculating dependency graphEstablished TCP socket on 38724[yanqitest] $ /usr/local/jdk/bin/java -cp /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.13.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-4.5.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.13.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.13.jar 38724<===[JENKINS REMOTING CAPACITY]===>channel startedExecuting Maven: -B -f /root/.jenkins/workspace/yanqitest/pom.xml clean package -Dmaven.test.skip=true[INFO] Scanning for projects...[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[INFO] ----------------< springmvc-maven:easy-springmvc-maven >----------------[INFO] Building springmvc-maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ war ]---------------------------------[INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom[INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (3.9 kB at 1.9 kB/s)#.........省略部分输出.............[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ easy-springmvc-maven ---#.........省略部分输出.............[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/yanqitest/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/yanqitest/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.[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/yanqitest/target/easy-springmvc-maven][INFO] Processing war project[INFO] Copying webapp resources [/root/.jenkins/workspace/yanqitest/src/main/webapp][INFO] Webapp assembled in [95 msecs][INFO] Building war: /root/.jenkins/workspace/yanqitest/target/easy-springmvc-maven.war[INFO] WEB-INF/web.xml already added, skipping[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 11:37 min[INFO] Finished at: 2021-03-25T15:20:52+08:00[INFO] ------------------------------------------------------------------------Waiting for Jenkins to finish collecting data[JENKINS] Archiving /root/.jenkins/workspace/yanqitest/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/yanqitest/target/easy-springmvc-maven.war to springmvc-maven/easy-springmvc-maven/0.0.1-SNAPSHOT/easy-springmvc-maven-0.0.1-SNAPSHOT.warchannel stoppedSSH: Connecting from host [server11]SSH: Connecting with configuration [tomcat] ...SSH: EXEC: completed after 201 msSSH: Disconnecting configuration [tomcat] ...ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [127]]Build step 'Send build artifacts over SSH' changed build result to UNSTABLEFinished: UNSTABLE
11.3.观察tomcat网站服务器,代码和脚本
[root@server12 ~]# ls /jenkins/war/easy-springmvc-maven.war[root@server12 ~]# ls /root/www.yanqi.com/www.yanqi.comeasy-springmvc-maven.war #就是推送过来的网站源码了
12、排错
问题1:jenkins访问一直处于等待状态

#tomcat日志显示如下信息:[root@server11 ~]# tail -f /usr/local/tomcat/logs/catalina.outWARNING [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里增加资源最大可缓存的大小就行了,大小可按自己的需要定义[root@server11 ~]# 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><ResourcescachingAllowed="true"cacheMaxSize="100000"/></Context>#最后重起tomcat,问题解决!
问题2:剩余内存必须大于2G
# tomcat启动之前的内存:[root@server12 ~]# free -mtotal used free shared buff/cache availableMem: 2845 130 2212 17 502 2630Swap: 4095 0 4095#tomcat启动之后的内存:[root@server11 ~]# free -mtotal used free shared buff/cache availableMem: 8837 2435 5232 33 1169 6045Swap: 4095 3 4092
问题3:插件下载后继续下面初始化完成点开始的时候跳到一个空白页面
解决:点击地址栏左边的后退按钮即可进入正常页面

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

手动安装这些插件
问题4:脚本权限
#控制台输出报错脚本权限问题bash:/jenkins/sh/deploy.sh:Permission denied#尝试修改构建后脚本的权限
问题5:构建个人的github库时,缺失pom文件;可以用公共库中拷贝,传到自己的GitHub上。

END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!




推荐阅读
Recommended reading


JavaBBS
Git → https://www.javabbs.cn/git
JavaBBS大数据→ https://www.javabbs.cn/dsj
JavaBBS云存储→ https://www.javabbs.cn/ycc
JavaBBS数据库→ https://www.javabbs.cn/sjk
JavaBBS云计算→ https://www.javabbs.cn/yjs
JavaBBSIT.Log→ https://www.javabbs.cn/itl
JavaBBSNginx→ https://www.javabbs.cn/ngx
JavaBBSzabbix→ https://www.javabbs.cn/zbx
JavaBBSJavaSE→ https://www.javabbs.cn/jse JavaBBS社区文章→ https://www.javabbs.cn/bwz
JavaBBS社区资料→ https://www.javabbs.cn/bzl





