• Jenkins发布windows服务器jar


    一、背景

      之前是linux服务器部署的项目,现在转为windows服务器部署。jenkins和git都已经部署好了。所以本文只会重点讲Jenkins调用windows服务器bat命令及bat命令的编写概况。

    二、详情操作

    1、Jenkins调用windows bat文件

    首先在Jenkins项目配置"高级项目选项"-pipeline scipt 填入脚本

    1. pipeline {
    2. agent any
    3. stages {
    4. stage('pull code from gitlab') {
    5. steps {
    6. git branch: '${branch}', url: 'git@XXXX.git'
    7. }
    8. }
    9. stage('maven clean install') {
    10. steps {
    11. sh 'mvn clean'
    12. sh 'mvn package'
    13. }
    14. }
    15. stage('send file and restart') {
    16. steps {
    17. sshPublisher(publishers: [sshPublisherDesc(configName: '服务器IP', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''call E:\\program\\restart.bat''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/program', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/abc-1.0.0.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
    18. }
    19. }
    20. }
    21. }

    脚本注意事项:
    ①:替换git项目具体的url
    ②:替换服务器具体的ip
    ③:替换windows下项目具体的jar包路径 remoteDirectory
    ④:替换sourceFiles项abc具体的项目名称

    ⑤:exexCommand:调用windows服务器路径中的bat文件,\\是转义windows文件夹分隔符\

    2、编写windows下bat命令文件
    1. @echo off
    2. ::查找之前的项目是否正在运行 该处的jar包名称要和 start运行处的 jar包名称 保持一模一样
    3. for /F "delims= " %%a in ('jps -lv ^| find /i "E:\program\abc.jar"') do set PID1=%%a
    4. ::如果正在运行则杀掉进程
    5. ::注意, "%PID1%"=="" 等号两边不要加空格, if 后如果跟括号的话, 括号前后要加空格, 否则语法错误
    6. if not "%PID1%"=="" (
    7. taskkill /f /t /PID %PID1%
    8. )
    9. ::休眠7秒
    10. waitfor SomethingThatIsNeverHappening /t 7 2>NUL
    11. ::删除旧的jar包, 先判断, 如果jar包存在则删除
    12. if exist "E:\program\abc.jar" del E:\program\abc.jar
    13. ::从jenkins的工作空间中 复制jar包
    14. copy C:\Users\adminUser\program\abc-1.0.0.jar E:\program\abc.jar
    15. ::运行 java 程序, 此处jar包名称要和查找进程处的 jar包名称 一模一样
    16. ::如果是从nacos中读取配置信息的话, 要添加-Dfile.encoding=utf-8, 因为nacos默认是utf8编码, cmd运行默认使用gbk编码, 编码不一致导致配置文件读取错误
    17. java -Dfile.encoding=utf-8 -Dhudson.util.ProcessTree.disable=true -jar E:\program\abc.jar --spring.profiles.active=dev > E:\program\abc.log 2>&1 &
    18. exit

    注意事项:
    ①:该bat文件如果不是ANSI(UTF8)格式的话第一行会被转义 不过第一行命令报错的话影响也不大。

    ②:从jenkins推到服务器的jar包路径默认路径我的是:C:\Users\adminUser\program\abc-1.0.0.jar
    需要改成你自己的路径。

    ③:Jenkins执行该脚本后并不是绿色Success标识,但并不影响实际效果。原因是等待java -命令超时。解决方式可在java -前加 start 意为后台执行该命令。而后执行exit退出。但我的服务并没有启动成功,如有知晓解决方式还请告知 谢谢。

  • 相关阅读:
    Maven
    干洗店预约下单管理系统收衣开单拍照必备软件
    Mysql--技术文档--B+树-数据结构的认知
    java使用libreOffice预览word,ppt,txt等文档
    Spring-aop +redssion 实现接口限流注解
    23种设计模式(二十)命令模式(阁瑞钛伦特软件-九耶实训)
    数据结构(10)图的概念、存储
    matplotlib图表的常用设置(一)
    树莓派4b ubuntu 18.04安装+ROS安装
    一文读懂如何部署具有外部数据库的高可用 K3s
  • 原文地址:https://blog.csdn.net/weixin_42456466/article/details/134054952