Jenkins自动化构建

2022-08-23
  • 本文章支持以下:
    • 针对前端Vue、后端SpringBoot项目进行自动化构建
    • 支持构建完成后自动上传到svn指定目录
    • 针对在windows上部署的Jenkins,相关命令为windows命令,可根据需要自行改写为shell指令
  • 文章摘要
    • Jenkins前端build
    • Jenkins后端build
    • Jenkins构建后自动上传SVN
    • Jenkins权限管理(后续完善)
    • Jenkins修改默认workspace(后续完善)

一、全局Plugin配置

1.1 Subversion

  • 安装SVN插件

image.png

  • 配置SVN账户

在新建工程时直接配置即可

1.2 Node JS

  • 安装nodeJs插件,前端打包必要

image.png

  • 配置参数

安装完成后,在Global Toool Configuration配置node信息,这里配置了本地的node image.png

1.3 Build With Parameters

安装参数化构建插件 image.png

1.4 Maven与JDK

  • 安装maven插件

image.png

  • 配置
    • 找到Maven配置项,配置本地maven,不勾选自动升级
      • image.png
    • 安装完成后,在Global Toool Configuration配置maven与JDK,这里配置了本地的maven和JDK
      • image.png

        二、前端build

        2.1新建FreeStyle工程

        image.png

        2.2前置配置

        2.2.1 Discard old builds

        用于配置该工程默认保留几天或最多几次的构建信息,其余的删除。建议配置,因为保留过多严重占用磁盘空间。这里以保留最后3次构建为例。 image.png

        2.2.2 参数化构建This project is parameterized

  • 用于在每次构建时,由构建人填写动态的参数,可应用于后续的指令。

windows使用占位符:%占位符% Linux使用占位符:${占位符}

  • 以下示例共使用了三个占位符,用于判断SVN上传的位置以及是否覆盖文件等信息

image.png

2.3 拉取代码

配置代码在SVN的存放路径,配置SVN账号密码 P.S. 如果这里没有Subversion的选项,请先安装Subversion插件 image.png

2.4 配置node

如图,配置node信息,这里的node请选择之前在全局配置中配置的。 image.png

2.5 配置构建command

由于该Jenkins部署在windows上,因此均采用windows指令,思路相同,可根据需要自行修改为Linux试用的shell指令。 具体的文件目录需要根据实际情况修改。

#删除上次编译好的文件压缩包
del D:\jenkins\workspace\test_MunicipalWeb\dist.zip

#删除上次编译好的文件夹
rmdir /s D:\jenkins\workspace\test_MunicipalWeb\dist

#执行npm构建
npm run build

#将构建好的打成zip(需要先下载7z插件,去7z官网下载即可)
7z a -tzip dist.zip dist*

#复制到中转用的文件夹(上传svn中转用)
copy D:\jenkins\workspace\test_MunicipalWeb\dist.zip G:\项\测试版\lasted\MunicipalWeb

#根据Jenkins参数化构建来判断是否先删除svn上的文件(避免重复上传报错的问题)
IF NOT %firstPublish%==true svn delete -m "jenkins自动发布-删除已有文件:dist.zip" --force http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version%/dist.zip --username=huanghwh

#上传文件到svn
svn import -m "jenkins自动发布-dist.zip" G:\项\测试版\lasted\MunicipalWeb http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version% --username=huanghwh 

完整示例: image.png

三、后端build

3.1新建maven工程

image.png

3.2前置配置

同2.1前置配置

3.3拉取代码

同2.2拉取代码,修改SVN路径即可

3.4构建

选择主Pom文件位置;选择执行pom的指令

clean install -Dmaven.test.skip=true -U -Ptestjt

image.png

3.5Post-Steps

选择构建后的操作:

#复制jar包到中转用的文件夹(上传svn中转用)
copy D:\jenkins\workspace\test_pcmjt\pcmsz-client\target\pcmjt.jar G:\项\测试版\lasted\pcmjt

#根据Jenkins参数化构建来判断是否先删除svn上的文件(避免重复上传报错的问题)
IF NOT %firstPublish%==true svn delete -m "jenkins自动发布-删除已有文件:pcmjt.jar" --force http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version%/pcmjt.jar --username=huanghwh 

#上传到SVN
svn import -m "jenkins自动发布-pcmjt.jar" G:\项\测试版\lasted\pcmjt http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version% --username=huanghwh 

完整截图示例: image.png

四、通知配置

4.1邮件通知

4.2qq通知

基于goCqHttp实现qq通知功能,需要独立部署goCqhttp:https://github.com/Mrs4s/go-cqhttp

  1. 修改配置文件,开放http端口

    # 连接服务列表
    servers:
      # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
      - http: # http 通信
          address: 0.0.0.0:5700 # HTTP监听地址
          timeout: 5      # 反向 HTTP 超时时间, 单位秒,<5 时将被忽略
      #- ws:   # 正向 Websocket
      #- ws-reverse: # 反向 Websocket
      #- pprof: #性能分析服务器
      # 反向WS设置
      - ws-reverse:
          # 反向WS Universal 地址
          # 注意 设置了此项地址后下面两项将会被忽略
          universal: ws://127.0.0.1:8566/ws
          # 反向WS API 地址
          api: ws://your_websocket_api.server
          # 反向WS Event 地址
          event: ws://your_websocket_event.server
          # 重连间隔 单位毫秒
          reconnect-interval: 3000
          middlewares:
            <<: *default # 引用默认中间件
    
  2. 启动gocqhttp

  3. jenkins配置构建成功后通知

    中文要进行转码,放到浏览器中再复制出来

    curl "http://192.168.100.66:5700/send_group_msg?group_id=798665972&message=%%E8%%87%%AA%%E5%%8A%%A8%%E5%%8F%%91%%E5%%B8%%83%%EF%%BC%%9A%%E5%%B8%%82%%E6%%94%%BF%%E5%%89%%8D%%E7%%AB%%AF%%E6%%89%%93%%E5%%8C%%85%%E5%%AE%%8C%%E6%%88%%90%%EF%%BC%%8C%%E7%%89%%88%%E6%%9C%%AC%%E5%%8F%%B7%version%"