jenkins学习(windows批处理)

前言: 如果Jenkins搭建在windows环境中,那么就需要写一些批处理了,对windows中的一些操作。
说起windows批处理,我以为就是cmd命令,然而并不是,批处理是bat文件。

cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多。cmd文件只有在windows2000以上的系统中才能运行,而bat文件则没有这个限制。从它们的文件描述中也可以看出以上的区别:cmd文件的描述是“windows nt命令脚本”, bat文件的描述是“ms dos批处理文件”。

例:%i 、 %%i
这两个文件的语法上也是有一些差异的,因为它不是批处理文件中的变量,只能用于cmd命令行下的for循环中,在命令行中for循环的语法是for %variable in (set) do command [command-parameters],其中的variable只能是单字母或者非特殊含义的字符,同样的for循环语句如果写在批处理文件中variable之前就要加两个%%了。

而常用的CMD命令可参考:
https://blog.csdn.net/qq_40742949/article/details/109409084

思路:
项目构建之前,停止所在Tomcat服务器,需要将原来的项目删除,并重启Tomcat。
首先想到的就是利用Tomcat\bin中的shutdown.bat来关闭Tomcat,调用其命令可以关闭Tomcat,但是遇到异常,则黑窗口就会有卡顿,所以单单调用命令是不行的。只能强制杀死它,那就直接杀死它的进程就行了嘛。
在cmd 中杀死的方式:

netstat -ano |findstr “8080”
TCP    11.1.1.111:11111       111.111.11.111:8080    ESTABLISHED     4948
taskkill  /pid 4948 -f (-f是强制杀死进程)

沿着这个思路,写bat文件。

C:\Users\shinow>netstat -ano |findstr "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       23940
  TCP    11.1.1.111:51755       111.111.11.111:8080    ESTABLISHED     4948
  TCP    [::]:8080              [::]:0                 LISTENING       23940

看到这个就是TCP/IP协议了,如果等于8080,就杀死它的端口号。

TCP/IP:
第一次握手:建立连接时,客户端向服务器发送一个SYN包(握手信号),并计入SYN_SENT状态,等待服务器确认。
第二层握手:服务器收到SYN包,必须确认客户端的SYN,同时自己也发送一个SYN包,即SYN+ACK包(接收到消息并响应),此时服务器进入SYN_SENT状态。
第三次握手:客户端收到服务器的SYN+ACK包,并向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入Established(已建立的,确认的)状态。即TCP连接成功,完成三次握手。
1:A发,B收,B知道A能发;
2:B发,A收,A知道B能发能收;
3:A发,B收,B知道A能收。

如图所示:是应对于jenkins处理tomcat写的一些bat文件:

cmd /c call C:\tomcat-8.5.38\bat\msc-api.bat

相关的配置路径,根据实际情况,注意修改。

@echo off

echo 关闭Tomcat
set CATALINA_HOME=C:\tomcat-8.5.38
call %CATALINA_HOME%\bin\shutdown.bat

for %%a in (8082) do (
    set pid=0
    for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%%a"') do (
        set temp=%%b
        for /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (
            if %%j==%%a (
                taskkill /f /pid %%c
                set pid=%%c
                echo 端口号【%%a】相关进程以杀死
            ) else (
                echo 不是本机占用端口【%%a】
            )
        )
    )
    if !pid!==0 (
       echo 端口号【%%a】没有占用
    )
)

echo等待3秒时间
ping -n 3 127.1>nul

echo 删除包
rd /s /q C:\tomcat-8.5.38\webapps\ROOT
del C:\tomcat-8.5.38\webapps\ROOT.war

echo 开启Tomcat
set CATALINA_HOME=C:\tomcat-8.5.38
call %CATALINA_HOME%\bin\startup.bat

echo等待5秒时间
ping -n 5 127.1>nul

启动快速启动Jenkins批处理bat文件

@echo off
echo **********************************************
echo.
echo ***********启动jenkins****************** 
cmd /c "java -jar E:\jenkins\jenkins.war --httpPort=8080"
pause

对于flutter打包的bat文件命令(就是用jenkins对APP打包)。

cd C:\Users\lc\Desktop
call C:\Users\lc\Desktop\下面创建的脚本.bat
@echo off 
md appapk
cd appapk
git add
git clone git项目路径
echo "git 拉取成功"

@ping -n 5 127.1 >nul

cd C:\Users\lc\Desktop\appapk\项目名称

echo "执行 flutter pub get命令"
call flutter pub get
echo "flutter pub get 成功"

echo "执行 flutter pub upgrade命令"
call flutter pub upgrade
echo "flutter upgrade 成功"

echo "执行 flutter pub run build_runner build命令"
call flutter pub run build_runner build
echo "run successful"

echo "执行打包命令"
call flutter build apk --split-per-abi
echo "打包成功"

echo "重命名"
ren C:\Users\lc\Desktop\appapk\项目名称\build\app\outputs\flutter-apk\app-arm64-v8a-release.apk msc.apk
echo "重命名完成"

copy C:\Users\lc\Desktop\appapk\项目名称\build\app\outputs\flutter-apk\msc.apk  C:\Users\lc\.jenkins\workspace\正式mscAPP打包

pause

删除包:

@echo off 
echo 删除包
rd /s /q C:\Users\lc\Desktop\appapk
pause

附:如果部署的时候Tomcat太多的话,分不清哪个是哪个,可以把黑窗口的标题换一下:
在这里插入图片描述
实现步骤:
方法一:在Tomcat的bin目录下,创建一个名为setenv.bat的文件,
编辑setenv.bat 内容: set TITLE=标题 保存为bat文件。

方法二:修改catalina.bat,将下面代码中改为想要的名字

在这里插入图片描述
注:不过在catalina.bat的最上面,有一段对各个变量的说明。最开始有如下一段注释
在这里插入图片描述
注释不建议我们直接修改catalina.bat。而是把对默认值的修改统一放在setenv.bat里。

  • 8
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值