Java项目构建打包规范,jenkins2.121.1构建java项目环境,一键打包发布
该版本为2.121.1,其他版本会稍有不同,仅做参考
1.登录jenkins后,点击左上角“新建任务”。
2.填写任务名称,然后选择构建类型(一般是选择构建一个maven项目)
3.填写General模块下信息
(1).填写描述
(2).选择 丢弃旧的构建
4.填写源码管理模块下信息
(1).选择git或Subversion,看自己项目用的git或者svn (下面是svn的配置)
(2).Repository URL : 项目svn的路径
Credentials : 如果有就随便选一个,没有就创建一个
其他的不用管,默认的就可以了
5.填写Build模块下信息
Root POM :pom.xml
Goals and options :clean install
6.填写Post Steps模块下信息
(1).选择 Run regardless of build result选项。
(2). 点击add post-build step,选择send files execute commands over SSH
Name : 发布的项目所在的服务器地址
Source files :shop-web/target/*.jar
Remove prefix :shop-web/target
Remote directory :/new-shop/
Exec command :chmod 777 /opt/new-shop/*.jar
(3).点击add server
Name : 发布的项目所在的服务器地址
Source files: sh/node-*.sh
Remove prefix : sh
Remote directory : /new-shop/
Exec command : chmod 777 /opt/new-shop/*.sh
(4). 点击 add post-build step,选择 execute shell script on remote host using ssh
SSH site : root@服务器地址:22
Command :/opt/new-shop/node-app.sh stop
cd /opt/new-shop/
BUILD_ID=dontKillMe ;
nohup /opt/new-shop/node-app.sh start>nohup.out &
7.点击保存
然后再服务器里面new-shop(这个目录是存放项目jar包的目录)目录下创建node-app.sh文件,文件内容如下:
#!/bin/sh
# 函数名
f=$1
# get basepath in parament
current=$(dirname $0)
cd ${current}
# 获取应用全路径
function get_full_app_path(){
# statememnt app deployment path
app_deploy_path=$1
max_time=0
max_time_file=""
for FILE in $app_deploy_path/*.jar
do
modify_date=`date +%s -r ${FILE}`
if test $[$modify_date] -gt $[$max_time]
then
max_time=$modify_date
max_time_file=$FILE
fi
done
echo "$max_time_file"
}
# 获取应用名称
function get_app(){
# get app path
path=$1
app_path=$(get_full_app_path ${path})
echo "${app_path##*/}"
}
function stoped(){
# incoming directory
app_directoy=$1
# get app path
app=$(get_app $app_directoy)
if [ -z "${app}" ]; then
echo "no find app $app"
else
pid=`ps -ef | grep ${app} | grep -v grep | awk '{print $2}'`
if [ -n "${pid}" ]; then
kill -9 $pid
echo "stop OK"
else
echo "haven't app run"
fi
fi
}
function started(){
. /etc/profile
# incoming direcory
app_directoy=$1
#get app path
app_path=$(get_full_app_path ${app_directoy})
echo ${app_path}
chmod 777 ${app_path}
## JAVA_HOME/java ...
nohup /usr/local/services/jdk1.8.0_171/bin/java -Xms512m -Xmx512m -jar ${app_path} --spring.profiles.active=stest start &
}
case $f in
start)
echo "starting app"
started ${current}
;;
stop)
echo "stoping app"
stoped ${current}
;;
restart)
stoped ${current}
started ${current}
echo "restart"
;;
*)
echo "start [Release directory],stop [Release directory],restart [Release directory], deploy [Release directory] [project]"
;;
esac
需要修改 nohup /usr/local/services/jdk1.8.0_171/bin/java 改成自己服务器的jdk路径
Java项目构建打包规范,jenkins2.121.1构建java项目环境,一键打包发布相关推荐
- java实体类命名规范_java实现周易起名-java实体类起名规范
Java中类的命名规范? java命名规范? Camel-Case(Camel-Case)是编写计算机程序时的一组命名规则(惯例). 程序员能够更轻松地与同行交流自己的代码,因此最好采用具有更好可读性 ...
- 一份我们团队Java开发的开发规范,参考了阿里巴巴Java开发手册终极版v1.3.0
编程规约 For variable name, always use English with lowerCamelCase. space in comment: bad example: Sugge ...
- java.lang.Record:规范草案
建议的Java记录的工作仍在继续. Brian Goetz 昨天在OpenJDK amber-spec-experts邮件列表上启动了三个新线程,其中两个专注于Java Records. 这两个面向记 ...
- 服务器全自动打包,懒到极致之怒撸一键打包发布系统
一切得从上个版本的打包发布说起. 开发中本人负责了iOS包的版本发布工作.iOS打包:不就是选一下证书,再在Xcode上点几下按钮,IDE全都给你设置好流程了,有必要这么麻烦吗? 诚然,如果只是打包, ...
- day01--java基础编程:计算机基础知识 ,java语言概述,java开发环境搭建,eclipse概述,创建简单java项目,JDK JRE JVM的关系,java开发中的命名规范,编程风格
1 Day01–Java开发环境+HelloWorld 1.1 计算机基础知识 资料下载网址:刘沛霞 18600949004 code.tarena.com.cn tarenacode code_20 ...
- 【Java 强化】代码规范、JavaBean、lombok、内省(Introspector)、commons 项目、注解详解
Java 强化 代码规范(包.类.接口.方法.变量.常量名) 主板加载通信组件案例(知识点回顾) 面向接口编程 + 集合 + 匿名内部类 加载资源文件 + 反射 JavaBean 规范 Lombok ...
- java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...
软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...
- Java 项目的命名规范
做开发的都知道,一个好的项目规范可以提高开发效率以及后期的维护.自己手上有个项目,里面规范很乱,自己在对它进行二次开发的时候很蛋疼,它没有相应的文档,公司给我的就只有一个项目源码,其中的关系还要自己去 ...
- 蒲公英java后台上传_Android apk 项目一键打包并上传到蒲公英的实现方法
项目一键打包并上传到蒲公英 缘由:测试流程由 打包 找包准备上传 填写更新信息 然后上传 过于复杂 所以想要简化开发 阅读须知:需要读者了解如何在项目里面建立一个空的gradle plugin的过程, ...
最新文章
- windows8专业版安装sql2012
- list集合去重的三种方式
- TinyXML:一个优秀的C++ XML解析器
- Centos 下安装redmine及设置发送邮件功能
- 迁移学习 nlp_NLP的发展-第3部分-使用ULMFit进行迁移学习
- 2017.9.21 道路修建(noi2011) 思考记录
- linux malloc速度,性能 – memcpy()的速度受malloc()的不同方式的影响很大
- c++ thread(2.1)---join()
- ionic——性能优化【界面缓存清理】
- Access导入Sql 2008 R2 错误 0xc020801c
- XXL-JOB快速入门搭建
- Mysql Workbench SSL错误
- ESP8266 12F 点灯科技APP 控制两个舵机
- 盒子滚动到底部有偏差 js_干货丨JS 经典实例收集整理
- JavaScript(JS) string.italics( )
- lnnoDB:Attempted to open a previously opened tablespace. Previous tablespace mysql/innodb_index_stat
- ac86u格式化jffs_【新手教程】20180828 ASUS固件使用操作指引华硕AC86U
- Sfm方法过程及原理
- Java并发_cas、aqs
- 使用php让页面只能被百度gogole蜘蛛访问
热门文章
- 生命的礼赞,请记住我的名字,我叫科比-布莱恩特
- 做工程师不懂这七点,难怪你总是混不好
- 连续发表三篇核酸研究数据库文章
- 你的肠道菌群是遗传自你父母,还是后天环境塑造的?
- html接收model数据,QAbstractTableModel数据返回要显示的html代码
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内)、设置method参数为spatialSign
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和
- R语言使用ggplot2包的快速可视化函数qplot绘制分组分组点图(带状图)实战
- pandas使用date_range函数按照指定的频率(freq)和指定的个数(periods)生成dataframe的时间格式数据列、基于dataframe的日期数据列生成日期索引
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签