最近做了个Jenkins配合Gitlab自动部署Java项目到Windows Server服务器。

Jenkins和Gitlab在Linux下,好一顿折腾,先记录下脚本,其余后续补充吧。

把Java项目作为服务

https://github.com/winsw/winsw

后端

@echo off

set ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
set ymd=%ymd: =0%
:: 定义常用文件夹路径
set jarName=jelly-web.jar
SET sourceFolder=E:\jenkins\source\jelly-back\
SET jarFolder=E:\jenkins\source\jelly-back\jelly-web\target\
SET targetFolder=E:\app\jelly\backend\
SET backupFolder=E:\jenkins\backup\ echo 接收到构建任务
E:
echo 进入代码文件夹
cd %sourceFolder%
echo 切换到 master 分支
git checkout master
echo 拉取最新代码
git pull
echo 打包代码
call mvn clean -U install -Dmaven.test.skip=true
echo 打包完成 拷贝jar包
if exist %jarFolder%%jarName% (
rem 停止服务
net stop jelly-back
if exist %targetFolder%%jarName% (
echo 存在旧的构建【%targetFolder%%jarName%】,备份
::把原来发布的版本 备份
copy /y %targetFolder%%jarName% %backupFolder%\jelly-web-%ymd%.jar
echo 删除旧的构建【%targetFolder%%jarName%】
::把发布文件夹的jar包删除
del %targetFolder%%jarName%
)
::把当前gitlab文件夹下的jar包移动到发布文件夹
move %jarFolder%%jarName% %targetFolder%
cd %targetFolder%
net start jelly-back
echo 启动项目【%jarName%】成功
) else (
echo 文件【%jarFolder%%jarName%】不存在,打包失败,请检查!
)

前端

@echo off

set ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
set ymd=%ymd: =0%
:: 定义常用文件夹路径
set distName=dist
SET sourceFolder=E:\jenkins\source\jelly-ui\
SET distFolder=E:\jenkins\source\jelly-ui\dist\
SET targetFolder=E:\app\jelly\fontend\
SET backupFolder=E:\jenkins\backup\ echo 接收到构建任务
E:
echo 进入代码文件夹
cd %sourceFolder%
echo 切换到 master 分支
git checkout master
echo 拉取最新代码
git pull
echo 打包代码
call npm install
call npm run build:prod
echo 打包完成 拷贝打包后文件
if exist %sourceFolder% (
if exist %targetFolder%%distName%\ (
echo 存在旧的构建【%targetFolder%%distName%】,备份
::把原来发布的版本 备份
xcopy %targetFolder%%distName% %backupFolder%%distName%-%ymd%\ /q /e /r /S /Y
)
::把当前文件夹下的dist移动到发布文件夹
echo 把当前文件夹下的dist移动到发布文件夹
xcopy %distFolder% %targetFolder%%distName%\ /q /e /r /S /Y
) else (
echo 文件【%sourceFolder%】不存在,打包失败,请检查!
)

记录下批处理bat脚本获取打包发布问题的更多相关文章

  1. 今天我自己第一次写了一个Windows批处理bat脚本,一起学习一下吧。

    今天我自己第一次写了一个Windows批处理bat脚本,备注一下 事情原由:自己使用Java开发了一个加解密的工具.但是当把工具给别人使用的时候,别人还需要把代码编译打包, 然后还需要看一下代码里面的 ...

  2. 基于bat脚本的前端发布流程的优化

    背景介绍 前面在基于bat脚本的前端发布流程设计与实现中,我已经介绍了设计与实现,这一篇主要是针对其的一个优化折腾(分两步走,第一步先搞出来,第二步再想着怎么去优化它),我主要做了以下几件事. &qu ...

  3. 批处理bat脚本编写(附详细例子)

                                                        批处理bat脚本编写(附详细例子) 由于在项目开发的过程中经常需要编写bat脚本,而看大牛们编写 ...

  4. 批处理bat命令--获取当前盘符和当前目录和上级目录

    批处理bat命令--获取当前盘符和当前目录和上级目录 批处理命令获取当前盘符和当前目录%~d0 是当前盘符%cd% 是当前目录可以用echo %cd%进行打印测试 以下例子是命令行编译Visual S ...

  5. [ Windows BAT Script ] BAT 脚本获取windows权限

    BAT 脚本获取windows权限 @echo off echo I am trying to run as Administrator %1 %2 ver|find "5."&g ...

  6. 基于bat脚本的前端发布流程设计与实现

    写在前面 本文大致向读者介绍了楼下几点知识,希望在编写bat脚本时候能够帮到读者,如果能够有所启迪,那就更好了. bat脚本的相关知识和案例编写 用windows自带的命令压缩文件 windows和l ...

  7. 记录下自己写的gulp打包脚本

    var c = { rootPath: 'src',//项目文件夹 outputPath: 'output',//文件编译后的输出目录 revPath: 'manifest',//rev映射文件目录 ...

  8. 批处理bat标准化获取当前系统日期的几种方法,补0

    首先有两个推荐的方案. 一: for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get Loc ...

  9. linux下使用shell脚本获取终端宽度

    获取终端大小时候的学习 学习日期:2018/11/3 问题来源: 在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行缓慢 解决方法: 使用yes 命令 sed '50 ...

  10. mac下git+maven+jenkins自动打包发布

    随着springboot+springcloud(dubbo)越来越多人使用,流行的微服务的概念越来越深入人心.分布式部署越来越复杂,给手动发布带来很大工作量.为了方便前期测试和后期线上部署更新,可使 ...

随机推荐

  1. vue3+three.js实现疫情可视化

    前言 自成都九月份以来疫情原因被封了一两周,居家着实无聊,每天都是盯着微信公众号发布的疫情数据看,那种页面,就我一个前端仔来说,看着是真的丑啊!(⊙_⊙)?既然丑,那就自己动手开整!项目是2022.9 ...

  2. 水晶报表中用Code128制作条型码的方法

    一.在[文件系统]中新建一个[Fonts文件夹],然后添加[Code128.ttf]文件. 二.在水晶报表里的[字段资源管理器]的[公式字段]中新建一个公式字段.点击[使用编辑器]之后弹出[公式工作室 ...

  3. 使用pktmon抓包

    在Windows上遇到网络问题,需要抓包的时候之前我们会使用netmon和Microsoft Message Analyzer.随着时间的推移,微软已经停止了对Microsoft Message An ...

  4. elementUI中page(分页)的使用方法

    HTML部分 <!-- 快捷键 page-div --> <el-pagination background layout="sizes,prev, pager, next ...

  5. 用compose安装tp框架提示警告putenv

    PHP Warning:  putenv() has been disabled for security reasons in phar://C:/ProgramData/ComposerSetup ...

  6. tcp_tw_recycle参数引发的故障

    文章转载自:https://blog.csdn.net/wireless_tech/article/details/6405755 故障描述: 2010年9月7日,新上线的手机游戏论坛有部分地区用户反 ...

  7. 配置 jenkins 权限管理

    安装插件 更改认证方式 创建用户 创建角色并授权 给用户指定角色 新用户登录

  8. Mapping

    dynamic针对的是新增的字段,不是对mapping中已有的字段 (原有mapping中的字段不受影响,只影响新增的字段) 当dynamic被设置成false的时候,存在新增字段可以被写入到索引文件 ...

  9. 在客户端电脑使用 kubectl 远程管理 Kubernetes

    日常工作中,可能需要在自己的笔记本电脑上执行 kubectl 命令以管理远程 Linux 服务器上的 Kubernetes 集群.通过调用 kubernetes API 来实现对 Kubernetes ...

  10. Node.js躬行记(23)——Worker threads

    Node.js 官方提供了 Cluster 和 Child process 创建子进程,通过 Worker threads 模块创建子线程.但前者无法共享内存,通信必须使用 JSON 格式,有一定的局 ...