Jenkins—在windows环境搭建Jenkins环境 并构建部署到本地Tomcat中

巨人的肩膀

Jenkins「第一节」-win10环境tomcat部署
高版本Jenkins关闭跨站请求伪造保护(CSRF)

场景

需要在Windows台式机上搭建Jenkins环境,构建并部署项目到本地tomcat。因该台式机放在公司局域网内,为了方便研发和测试人员构建,需要在该台式机上搭建Nginx并对jenkins进行反向代理。

需要预先完成的操作

为了方便看官,特将相关资源在百度云分享:

链接:https://pan.baidu.com/s/1swd45m7V7f-O8NHFvK3QNw
提取码:1q8i

安装:

  • JDK(可以从官网下载一个JDK)
  • Maven(切记要使用阿里的maven仓库,否则构建速度非常慢,可参考此文章
  • Git(因待构建项目代码存放在git上,故需安装git客户端,可参考此博文
  • Nginx(如果需要通过Nginx反向代理Jenkins的话)
  • awk 用于获取tomcat进程id(下载,解压并将awk.exe复制到C:\Windows\System32)

下载:

  • Tomcat(可以从官网下载一个Tomcat)
  • jenkins.war(同上)

文章叙述方式

本文将和大家一起一步一步地完成Jenkins环境搭建,使用脚本构建并自动化部署一个项目,过程中会遇到一些问题,将在出现问题的时候加以介绍解决方案,所以,建议先跟着文章走完整个流程,整体有个感觉,然后再开始着手操作。

步骤

一、搭建Jenkins环境

1、解压Tomcat到指定目录中,为了方便管理,将解压后的tomcat目录重命名为tomcat-8088-jenkins
jenkins
2、修改Tomcat配置文件conf/server.xml,避免因为端口被占用而出现项目启动失败

<Server port="8005" shutdown="SHUTDOWN">
修改为:
<Server port="8105" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
   connectionTimeout="20000"
   redirectPort="8443" />
修改为:
<Connector port="8088" protocol="HTTP/1.1"
   connectionTimeout="20000"
   redirectPort="8543" />

3、将jenkins.war移动到Tomcat的webapps中
4、控制台cmd中切换到tomcat目录的bin目录中,执行以下命令启动tomcat:

catalina.bat run

5、浏览器中访问jenkins:http://localhost:8088/jenkins
6、页面提示需要 输入管理员密码 “解锁Jenkins”,该密码为系统自动生成的密码,密码在这个文件中,用txt打开即可:C:\Users\【此处是你当前windows用户的账号名】\.jenkins\secrets
解锁Jenkins

7、输入密码,并点击继续,选择安装推荐插件即可,速度很慢,需要等待一段时间,可以隔1小时看一次
在这里插入图片描述
8、创建admin账号
在这里插入图片描述
9、Jenkins实例url配置,使用修改,使用默认值即可
在这里插入图片描述
10、进入完成页面
Jenkins已就绪

二、配置Jenkins参数
1、缓存的最大空间不足:
org.apache.catalina.webresources.Cache.getResource 无 法将位于[/images/top-sticker-bottom-edge.png]的资源添加到Web应用程序[/jenkins]的缓存中,因为在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间

缓存空间不足
解决办法:

在tomcat中conf/context.xml末尾增加配置:
<Resources cachingAllowed="true" cacheMaxSize="100000" />

在这里插入图片描述

2、CrumbFilter 警告:
 hudson.security.csrf.CrumbFilter.doFilter No valid crumb was included in request for /jenkins/ajaxExecutors by admin. Returning 403.

在这里插入图片描述
解决办法:

修改tomcat的bin/catalina.bat,增加以下内容,注意添加的位置:
set JAVA_OPTS=-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

在这里插入图片描述

3、为了避免Jenkins构建完成后 会自动kill掉tomcat进程,导致项目无法正常启动的问题,需要增加参数禁止该行为

解决方案:

修改tomcat的bin/catalina.bat,增加以下内容,注意添加的位置:
set JAVA_OPTS=-Dhudson.util.ProcessTree.disable=true

在这里插入图片描述

三、构建部署项目
1、检出代码

到指定目录下,通过git检出代码,本文中目录为:D:\Code\backend

2、创建Jenkins 构建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、增加构建和部署脚本

为了方便脚本管理,建议将不同步骤的脚本单独放到一个 “构建步骤”:

echo "构建项目"
D:
cd D:\Code\backend\common-pro
git pull
mvn clean package

**【注意】**此处使用了awk工具,需要将上面提供的资源中awk.exe保存到C:\Windows\System32中

echo "停止tomcat"
set pid=-123
for /F "tokens=*" %%i in ('jps -v^|findstr 8088^|awk "{print $1}"') do ( set pid=%%i)
if "%pid%" neq "-123" (
  taskkill /f /pid %pid%
)
echo "移动war包到tomcat"

D:
cd D:\Server\tomcat-8088\apache-tomcat-8.5.57\webapps

if exist backend.war (
  del /S/Q backend.war
)

if exist backend (
  rmdir /S/Q backend
)

copy D:\Code\backend\common-pro\target\mypro-1.0.1-SNAPSHOT.war backend.war
echo "启动项目tomcat"

D:
cd D:\Server\tomcat-8088\apache-tomcat-8.5.57\bin

set CATALINA_HOME=D:\Server\tomcat-8088\apache-tomcat-8.5.57
set CATALINA_BASE=D:\Server\tomcat-8088\apache-tomcat-8.5.57
set CATALINA_TMPDIR=D:\Server\tomcat-8088\apache-tomcat-8.5.57\temp

start /b startup.bat

保存配置:
在这里插入图片描述

3、构建部署项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
构建成功的日志:
在这里插入图片描述

三、使用Nginx代理(可选步骤,按需进行)
1、解压Nginx
2、修改配置文件,实现代理jenkins

修改Nginx配置文件conf/nginx.conf:
在这里插入图片描述

3、双击nginx.exe启动nginx
4、访问Jenkins:http://localhost/jenkins/
5、固定台式机的IP,避免机器重启后IP发生改变

登录路由器后台管理,将该台式机绑定到指定IP即可。以笔者的TP-Link为例,进行下面的操作即可绑定:
在这里插入图片描述
找到台式机对应的信息,点击+ 给台式机绑定IP:
在这里插入图片描述

6、局域网内可以通过该台式机ip访问jenkins:http://【该台式机在局域网内的IP】/jenkins,如:http://192.168.1.123/jenkins

结束语

至此,旅途结束,大家可以回过头逐一步骤进行操作,搭建属于自己的自动化构建工具。
笔者技术水平有限,如有不对之处,还望各位不吝赐教。
希望本文能给您带来帮助,如果遇到问题可以留言交流讨论。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值