目录
- 零、配置Tomcat
- 一、自由风格项目远程部署war包
- 1.创建自由风格项目
- 2.增加构建步骤
- 3.增加构建后操作
- 4.立即构建
- 5.查看控制台输出
- 二、创建流水线项目远程部署war包
- 二、部署jar包
- 1.创建自由风格项目
- 2. 安装Publish Over SSH插件
- 3.增加构建步骤 编译打包
- 4.增加构建后操作步骤
- 5.编写shell脚本
- 6.立即构建
零、配置Tomcat
默认情况下Tomcat是没有配置用户角色权限的
![](/d/20211017/ef7151f4953a4f3e04be421417a4bd0e.gif)
![](/d/20211017/59237d0add6c067ac6acf9a8f153e956.gif)
但是,后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置, 添加用户及权限
vi /opt/tomcat/conf/tomcat-users.xml
# 内容如下:
role rolename="tomcat"/>
role rolename="role1"/>
role rolename="manager-script"/>
role rolename="manager-gui"/>
role rolename="manager-status"/>
role rolename="admin-gui"/>
role rolename="admin-script"/>
user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
用户和密码都是:tomcat 注意:为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置
![](/d/20211017/17c4a8c1537d50cf7274a7ee55ddd35d.gif)
vi /opt/tomcat/webapps/manager/META-INF/context.xml
!--
Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
# 把上面这行注释掉即可!
![](/d/20211017/d59714a4eaa0eff0e1d87c31226dccdb.gif)
重启Tomcat,访问测试
![](/d/20211017/6589d4e0eb50d271a4eb7dfc21128f18.gif)
输入 tomcat tomcat
![](/d/20211017/ce7c803534148ce50d2b6cafbd4163e6.gif)
配置Tomcat凭证
![](/d/20211017/bb456d9b811dd32c05e3d04a9abb660d.gif)
一、自由风格项目远程部署war包
1.创建自由风格项目
![](/d/20211017/a7a05d2f3a6247f281c57f8dd5bed5e3.gif)
2.增加构建步骤
编译打包
![](/d/20211017/d72bfb35accea8bce618eb30ce040e68.gif)
3.增加构建后操作
远程部署
![](/d/20211017/a80175bc4e99f3327fa528d3ef3b0b72.gif)
4.立即构建
![](/d/20211017/c4884fab9ac18f1f6455c15935961809.gif)
5.查看控制台输出
![](/d/20211017/ff128e6d2a70fc3d7eb056f7fa971d21.gif)
二、创建流水线项目远程部署war包
项目选择为Pipeline流水线项目
,
- 概念
Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点
的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
- 使用Pipeline有以下好处(来自翻译自官方文档):
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流 程。 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接 收交互式输入,以确定是否继续执行Pipeline。 多功能:Pipeline支持现实世界中复杂的持续交付要 求。它支持fork/join、循环执行,并行执行任务的功能。 可扩展:Pipeline插件支持其DSL的自定义扩 展 ,以及与其他插件集成的多个选项。
- 如何创建 Jenkins Pipeline呢?
Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一 个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM) 中直接载入 Jenkinsfile Pipeline 这种方法)。
安装Pipeline插件 Manage Jenkins->Manage Plugins->可选插件
安装插件后,创建项目的时候多了“流水线”类型
![](/d/20211017/b600b6ddd8baeab48da20a6f5feb0774.gif)
1.拉取代码
配置git仓库,点击流水线语法
![](/d/20211017/47fd792f46f6bc3f2166bdc290cda93b.gif)
![](/d/20211017/a767d66df0993738da2b00d59288d4e3.gif)
点击生成流水线脚本
![](/d/20211017/aa0164f52ba86140d4a62bfefe8a19e6.gif)
2.构建编译
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '614e4281-db76-4388-befc-c50588f5e751', url: 'https://gitee.com/L1692312138/ssm_web_war_jenkins.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package -Dmaven.test.skip=true'
}
}
stage('构建完成') {
steps {
echo '构建完成'
}
}
stage('远程部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: '1692312138@qq.com'
)
}
}
}
![](/d/20211017/c6ecae4269bc9d5b65754871fa577464.gif)
3.远程部署
![](/d/20211017/1effc0c5fff3b349c8c9607aa22f5c5b.gif)
点击生成流水线脚本
![](/d/20211017/a82a94027c67350b7deaf52e6be4c555.gif)
stage('远程部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war'
}
}
完整脚本:
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '614e4281-db76-4388-befc-c50588f5e751', url: 'https://gitee.com/L1692312138/ssm_web_war_jenkins.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package -Dmaven.test.skip=true'
}
}
stage('构建完成') {
steps {
echo '构建完成'
}
}
stage('远程部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'a2672517-c02b-4f62-ab3c-e6f70d08b98e', path: '', url: 'http://wangyitong.club:8080/')], contextPath: null, war: 'target/*.war'
}
}
}
post {
always {
emailext(
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
body: '${FILE,path="email.html"}',
to: '1692312138@qq.com'
)
}
}
}
安装Pipeline Script from SCM插件
刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放
在项目中(一起进行版本控制) 1)在项目根目录建立Jenkinsfile文件,把内容复制到该文件中
![](/d/20211017/5e0bb13586cf753920121d810e76577b.gif)
2)在项目中引用该文件
![](/d/20211017/73e5cab40bb65e5fbf40cbb126f1f044.gif)
点击构建 查看控制台输出
![](/d/20211017/8a0855183035a4ad04a497ddcdcf6255.gif)
二、部署jar包
1.创建自由风格项目
流程 :
增加构建后操作步骤,然后配置ssh信息,编写脚本,然后发包后执行脚本,停止进程,在启动进程。
2. 安装Publish Over SSH插件
Publish Over SSH插件
![](/d/20211017/393a665bb33d6e650d61a456b03d8ac2.gif)
然后配置ssh
![](/d/20211017/e2d1f12ad3334f4d21ba2d997d7c5e94.gif)
![](/d/20211017/810e1a5949260e5f73991b0e11363a02.gif)
![](/d/20211017/1ab644d93d6650b333af165bc64a2ff8.gif)
3.增加构建步骤 编译打包
![](/d/20211017/021b9ad4e2e076c4621f24b58f0988fa.gif)
4.增加构建后操作步骤
配置工程 --》增加构建后操作步骤 选择Sned build artifacts over SSH
![](/d/20211017/5503b3d4396b046c7247d33f6c461ce7.gif)
Source files 项目构建后的目录
Remove prefix 去前缀
Remote directoty 发布的目录
Exec command 发布完执行的命令
![](/d/20211017/7653e26c0172590608eb98ecd1157a36.gif)
5.编写shell脚本
先通过项目名查找正在运行的项目的端口号,如果存在,则杀死该进程,
然后再次重启项目。
shell脚本:
#!/bin/env bash
#PID=`ps -ef |grep 项目名称 |grep -v grep | awk '{print $2}'`
PID=`ps -ef |grep 'wxthepublic-1.0-SNAPSHOT.jar' |grep -v grep | awk '{print $2}'`
if [ ! "$PID" ]
then # 这里判断TOMCAT进程是否存在
echo $PID"进程不存在"
else
echo "进程存在 杀死进程PID$PID"
kill -9 $PID
fi
nohup java -jar 'wxthepublic-1.0-SNAPSHOT.jar' >/dev/null 2>log
#根据重启后是否有当前应用判断启动是否成功
pid=$(ps -ef | grep java| grep 'wxthepublic-1.0-SNAPSHOT.jar'|awk -F '[ ]+' '{print $2}')
echo $pid
if [ -z $pid ]
then
echo "启动失败"
exit 1
else
echo 'wxthepublic-1.0-SNAPSHOT.jar' : $pid "启动成功"
fi
6.立即构建
点击立即构建,查看控制台输出
![](/d/20211017/3fcd6458a4a57bd97f7a90acceec50b2.gif)
目录下已经出现打过的jar包。
![](/d/20211017/e0e494bfcedeb9dd1d86b4e57ec81e6b.gif)
![](/d/20211017/919fe49bd265ec027e8c76f3c4eb7b75.gif)
到此这篇关于Jenkins部署war包和部署jar包的详细步骤的文章就介绍到这了,更多相关Jenkins部署war包和jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:- Jenkins远程部署war包过程图解
- 使用jenkins+maven+git发布jar包过程详解
- window下使用Jenkins来做自动化部署的教程图解
- 详解jenkins自动化部署vue
- CentOS7 上利用 jenkins 实现自动部署
- 使用Jenkins部署React项目的方法步骤