【Jenkins】windows构建自动化部署demo

前言

Jenkins 工作中主要用在Linux 系统上。目前只是 自己本地开发玩玩CI/CD,所以先在windows上跑个demo。

主要思路

  • 新建spring boot demo 项目

    • spring boot 打包成可执行jar包需要maven插件支持,官网 initializr 会默认在pom.xml里面加入插件声明
  • 构建git环境,准备一个可push 的github仓库

    • fork一个别的的项目也可以,关键是代码仓支持本地push上去
  • 使用 maven 命令行构建、运行项目

    mvn clean install
    java -jar target/demo-0.0.1-SNAPSHOT.jar
    
  • 安装Jenkins

    • 参考官网
    • Jenkins 本质上是一个可运行的后台项目,一个war包,在windows 上运行会注册到service上。按官网步骤安装完成后,直接localhost 访问自己设定的口号即可
      【Jenkins】windows构建自动化部署demo_第1张图片
  • 使用Jenkins的功能

    • 拉取最新的代码
    • 以命令行的形式打包、运行程序

Jenkins 的简单使用

【Jenkins】windows构建自动化部署demo_第2张图片

  • 建立一个任务

  • 配置git仓库
    【Jenkins】windows构建自动化部署demo_第3张图片

  • 配置启动脚本
    【Jenkins】windows构建自动化部署demo_第4张图片

export BUILD_ID=DONTKILLME
# 代码会默认拉到这个目录(区分于本地目录)
cd C:/ProgramData/Jenkins/.jenkins/workspace/TestDemo
mvn clean install
cd C:/ProgramData/Jenkins/.jenkins/workspace/TestDemo/target 
# 端口换成80,避免与本地工程冲突
nohup java -jar demo-0.0.1-SNAPSHOT.jar --server.port=80 &
  • 保存后即可构建

windows环境的瓶颈

shell脚本比bat脚本好用太多了,当我想要查出80端口占用的程序并且删掉,cmd中要用到findstr命令,但是它仅仅返回一行,不支持正则表达式的部分匹配。比如我只想返回PID,这个函数只返回了完整一行,对正则表达式的支持也不够好。

C:\WINDOWS\system32>netstat -ano |findstr "\<0.0.0.0:80\>"
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       18104

需要完成只提取18104作为输出,还要用到cmd的for命令,暂时没找到很通用的方案。Linux 的grep命令很快就能实现。

后记

浅浅认识自动化部署:Jenkins可以帮忙拉取远程仓库,保证代码是最新的。还可以定制启动脚本,让环境与本地隔离(本地有部分代码暂时不想push,那么这种隔离是很有意义的)。后续需要用Linux系统部署Jenkins,并完善整个自动化流程。包括github的hook配置,做到push代码后触发Jenkins自动构建。

你可能感兴趣的:(运维,后端,jenkins,自动化,运维)