暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

原创|NO.A.0003|——|DevOps|Jenkins概述|Jenkins实战案例|排错|

Java BBS 2021-05-18
649

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。

  1. CI: 

英文全称:Continuous  Integration

  • 中文全称:持续集成工具

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

  1. 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)

  1. 任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合。

  2. 构建:是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:github
centos7.x:10.10.10.11:#部署jenkins
centos7.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/bashrc
PATH=$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 --version
git 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/jdk
export PATH=$PATH:$JAVA_HOME/bin
[root@server11 ~]# source /etc/bashrc
#4.测试jdk
[root@server11 local]# 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

#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/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
[root@server11 ~]# source /etc/bashrc
#3.测试maven
[root@server11 ~]# 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-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/tomcat
export CATALINA_HOME
[root@server11 ~]# source /etc/profile
#启动tomcat:
[root@server11 ~]# /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.
#测试tomcat
http://10.10.10.11:8080/ #可以查看到tomcat的主页面,说明tomcat部署成功了
// 注意服务器地址
# 关闭tomcat(略):
[root@server11 ~]# /usr/local/tomcat/bin/shutdown.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的角色和用户(略): #可以不做,直接用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.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.

5.4、登陆jenkins:http://10.10.10.11:8080/jenkins/:准备工作

找到管理员密码

#添入以下文件密码到上图页面中
[root@server11 ~]# cat /root/.jenkins/secrets/initialAdminPassword
b1a9d328f9fc41e594158124eff03bbb
// 点击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 Authentication
GitHub Branch Source
GitHub 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.12
Last login:
 Wed Mar 24 22:50:52 2021 from 10.10.10.240

9.1.2.在jenkins上配置ssh信息

# 准备SSH私钥
[root@server11 ~]# ip a | grep inet
inet6 ::1/128 scope host
inet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute ens33
inet6 fe80::820d:b26d:3507:5834/64 scope link noprefixroute
inet 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/IQVpFcqs5mCfINFKn7fcbsF
KeX7KTqmNWfO3YUtKBVaDlDL9fmVSTpPY0OL5Ss53MWUTD7KV8bEYEYmXv6y2BSJ
+WdBFF819pKymBQSK8xBpEjC7TI8xJ6uuBU7dJx2FVPovaXLTNkYrKWTjMFx2tkz
QQePxm/Z2su4Euco2qepqM3F35UD48JL8SOmz8goXpjcky5QLZNUlbYXti+SFbwV
xJurVDu/2q1GPSKfZxWLPksdwxGuiNS6ChdhbHLDTJ1X+dhEgcvWcrJ7NRBtbSha
CzoRzdEbNgVx6pILy0X8NMuOQoN+8Q1ggc+ZcwIDAQABAoIBAESbI30YjDfbUhoy
3ZJ79iJQp024huzMGlczSEi1wrxYDdaeBwMeGCDy0dcgmtbW4vMXBCbQoby9JHiw
u50r41vU4J0u1pIq3dsSFHOFTgW+wkbydzuV0Jj5kTYBbinNqk+siUPItICaShHz
cX97HQQlx6RXcPnd09MoyuwbuwIJcQHLjMbIs9LTjGJTKzNbVGc58CXNVybajKrl
v4x3zVqCflUHYHVC8qT3Q8G03BtEznQJpiJiFhyfpekK6+2/PEjHp2yto8XpcXDL
kMA2muIUihRlT7wIqm5Pj9Olrud6xlPvLJKaGfJ3mmJALm5zb+n0vu+2d/NFvlyl
OOgPjlkCgYEA4kqZSUHBTBJfGAvnFUa9l7gaM0fMColFPZ5GHQpd1HZM/38l7XHf
4S7GSAWJH+shT+vZ97yjvvxBVPeVkNggY2BQpdbQHc5VNGEeXdFe1sx/K2jP0ux8
3J8xHerPjbDMLa4iJNVKE7R5H5xlbOPWAqvZNBRzuKNWzPSw0Xu40T0CgYEA3QwZ
b+Ja318INewih7xCOQ0fL6X6H2qhIGykD9DDa676syFEtC6hN3LWQKxtNNisfnl+
Urgkr2dM1mos9TY/gAi6UzG7/NtpvzTAO7do4nYJ3TBcivHUPdrRHwB89cIxS0C3
Gkd/HG5M0Jponr8AUUl4dAPvqaLOBkx3jZ5uYG8CfwqbdJP6gRUPx2VZKXvV1Q1H
k/LTar0TsisxQBgcZEmRQgq36w82R0hG6QR3PfZBD06vv4fdT8+kA2v4LwqbFumR
mjYr25WKFnReGQ5MwiVPcKaYQyWf8DpnO+YrG4+IuglqIC+Zz98clpDkw9xW0bFO
XOAUFViST39L+P3YztECgYEAxCiukhk/JyZANQneArJP2i0I1dHmyuZnIk0GsnpC
UVcwZrJJM9SFgJ1KAI6DQvhc6seKEIIVHAsBpu0GBH0lkMst/hIOju9vQhzf0p6K
Vx0E1+LI3QyJmnKKTYazXav87pj5ZDq6VFKVnDDKUsWQ1JHscJfloJY3WmOVXHmR
3cUCgYEAgBek/YctHD4nwaqmeBSZnzXID/TzArlnkM/CVSIJoNZ2fs/ew/qOQmNI
8CS7rlSWKcNbbTAE/E/Af5Rra3t7fBzTF88ubzmGCMNcxuehLdEySclbjRRuhwTq
QpJiGU2Y3MN4FEoGKy/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/*.war


Remove prefix #自动删除路径前缀(不需要创建路径前缀)
Remote directory


#tomcat业务服务器上的路径,需要提前在10.10.10.12(tomcat)上创建该目录。用来存放网站源代码。(需要后台创建)
#创建文件夹
[root@server12 ~]# mkdir -p /jenkins/war
[root@server12 ~]# ll /jenkins/war/
total 0


Exec command
tomcat(10.10.10.12) #在接收到源码之后的自定义动作。
#比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)
[root@server12 ~]# mkdir /jenkins/sh
[root@server12 ~]# vim /jenkins/sh/deploy.sh
#!/bin/bash
touch /root/www.yanqi.com
[root@server12 ~]# 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、构建任务

11.1、立即构建

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

输出信息

#控制台输出
#由用户 admin 启动
Running as SYSTEM
#构建中 在工作空间 /root/.jenkins/workspace/yanqitest 中
The recommended git tool is: NONE
No credentials specified
> /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/yanqivip/Jenkins.git # timeout=10
Fetching 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=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 # timeout=10
Commit message: "修改standard/1.1.2的依赖"
First time build. Skipping changelog.
Parsing POMs
Discovered a new module springmvc-maven:easy-springmvc-maven springmvc-maven
Modules changed, recalculating dependency graph
Established 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 started
Executing 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.war
channel stopped
SSH: Connecting from host [server11]
SSH: Connecting with configuration [tomcat] ...
SSH: EXEC: completed after 201 ms
SSH: 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 UNSTABLE
Finished: UNSTABLE

11.3.观察tomcat网站服务器,代码和脚本

[root@server12 ~]# ls /jenkins/war/
easy-springmvc-maven.war
[root@server12 ~]# ls /root/www.yanqi.com
/www.yanqi.com
easy-springmvc-maven.war #就是推送过来的网站源码了

12、排错

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


#tomcat日志显示如下信息:
[root@server11 ~]# 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里增加资源最大可缓存的大小就行了,大小可按自己的需要定义
[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>
<Resources
cachingAllowed="true"
cacheMaxSize="100000"
/>
</Context>
#最后重起tomcat,问题解决!

问题2:剩余内存必须大于2G

# tomcat启动之前的内存:
[root@server12 ~]# free -m
total used free shared buff/cache available
Mem: 2845 130 2212 17 502 2630
Swap: 4095 0 4095
#tomcat启动之后的内存:
[root@server11 ~]# free -m
total used free shared buff/cache available
Mem: 8837 2435 5232 33 1169 6045
Swap: 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






文章转载自Java BBS,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论