目前公司初步涉及微服务架构,那么持续集成就比较重要了,采用的CI的流程如图:
流程说明:
公司的项目需要使用到windows服务器,所以初步就这样做了,从svn拉取最新的项目进行构建,构建完成之后调用脚本文件发送最新的项目war包至开发和测试的应用启动目录,再配置一个监控目录文件改动的脚本,进而实现启动最新的项目,但每次去服务器的jenkins控制台启动项目不方便,而且不是每个开发者都会jenkins,所以在控制jenkins上我又写了一个ps脚本,通过远程在公司内网调用jenkins实现项目的构建,这样一套流程下来,每个开发者提交了项目之后只需启动我给的脚本过一会就能看到上线的效果了.
具体实现流程:
- jenkins安装 进入: Jenkin下载页面 选择 Generic Java package(.war)
- jenkins配置(maven,jdk,svn路径) ,maven项目支持需安装 Maven Release Plug-in Plug-in 插件
- 创建maven项目,配置好就行(开始不需要填写构建后操作),立即构建会在jenkins安装目录下生成workspace和项目目录,我们需要的就是 workspace目录,
- 将项目构建成功后的ps脚本拷贝至workspace目录,在项目配置页里面配置调用脚本命令(cmd 调用ps脚本需要特殊配置,下文会讲解)
- 到这一步就完成了将最新的项目war包拷贝至开发,测试服务器的功能了,然后在启动远程调用的ps脚本,就可以通过调用jenkins api启动项目的构建了
脚本讲解:
- 首先是构建成功后的ps脚本:
|
|
main 函数为脚本的入口,write-debug 是测试的时候输出用的,write-host是正式运行时输出用的
由于直接在jenkins里面运行项目会导致关闭困难,所以我们就在外面运行了,上面实现了文件的复制(开发服务器 + 测试服务器),下面就来实现文件的监控,运行,关闭了。文件拷贝至服务器,我们需要监控文件夹的改变才能知道文件更新了,进而才能重启项目,实现更新
这是jar类型文件的监控,只监控change事件的文件改变。然后先启动关闭脚本关闭项目,再启动启动脚本启动项目。启动和关闭就不贴了。上面有关闭的部分代码,启动的话就和普通命令一样了。接下来再看看远程api操作jenkins进行构建:
|
|
这是通过设置headers来进行basic authentication的。/job/jobname/build/ 来进行执行构建请求。jobname是根据文件名来获取的,所以只需要一个文件,改个名字,其他微服务就都能跑了。
在有些系统里powershell脚本默认是记事本打开的,需要改变默认打开方式,在打开方式这里选择
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 为默认打开方式,首次执行powershell脚本还需要在cmd窗口执行以下命令 powershell.exe -noprofile Set-ExecutionPolicy Unrestricted 开启执行权限