注意:该操作环境是windows系统
1.官网下载
注意jekins各版本不同支持jdk的版本也不同
https://www.jenkins.io/download/
如图进去后可看见最新版,而past releases是历史版本
查看自己各版本的支持
我下载的是2.346.1版本,是war包形式
2.启动jekins
直接在war包路径 java命令启动
java -jar jenkins.war --httpPort=8080
原理:启动的时候给命令,让jenkins不终结自己的进程衍生的进程。
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
启动完成后看输出日志里找到这串密码,就是admin的初始密码
也可在文件里寻找
3.安装基本插件
这里建议选择,推荐安装的插件,保证基本常用的功能可以使用。
然后下载多余插件可在Manage Plugins下载
比如说svn插件:Subversion,远程部署包插件插件:Publish over SSH,等自行根据情况选择
4.配置环境
进入Configure System (系统设置)
在系统设置这里,我们只需要设置最后面的一项,配置远程服务器地址,
即我们代码最终运行的服务器地址信息,就像我们之前手动部署时使用xshell登录Linux服务器一样,
当然这里是可以配置多台远程Linux服务器的,配置完成后点击保存即可,为后面我们配置自动化部署做准备,配置如下图
上传代码的根路径可以不填
进入全局配置环境
配置maven
配置jdk
配置代码版本控制,git或svn,自行根据自己情况,svn需自己另行下载插件
配置maven
5.创建工程项目
然后填写描述,或不写
源码管理根据自己情况
然后构建触发器和构建环境里的选项可不勾,自己根据实际情况
构建,选Invoke top-level Maven targets
进行clean install操作
主要是构建和构建后的操作,这两个比较重要
可以在构建里选执行shell脚本等命令,打包后进行的操作
构建后可选 Send build artifacts over SSH
将包发送到指定服务器再进行启动
点击高级勾选这个,能看到远程执行的命令
这里remote directory可单独为每个不同的项目发送到指定的路径.注意windows不能输入盘符,jekins这里只能输入文件夹路径(不包含盘符)
然后输入额外执行的脚本
前提是目的服务器含有该脚本
例如加个main.bat脚本,linux则sh
set source_jar_name=test.jar
set source_file=G:\jenkins\jenkins-workspace\workspace\springboot\target\
set deploy_path=G:\jenkins\deploy\springboot\
set port=8050
#防止jenkins在当前服务器部署项目,启动时终止jar包进程
set BUILD_ID=DONTKILLME
#杀掉进程
echo "starting kill process"
echo port : %port%
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
if [%%d] EQU [LISTENING] (
set pid=%%e
)
)
taskkill /f /pid %pid%
echo "finish kill process"
echo "starting move process"
move %source_file%%source_jar_name% %deploy_path%
echo "finish move process"
echo "starting backup process"
if exist %deploy_path%%source_jar_name% (
copy %deploy_path%%source_jar_name% "%deploy_path%staff-%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%.jar"
) else (
echo "not exist"
)
echo "finish backup process"
echo "starting project process"
start javaw -jar %deploy_path%%source_jar_name% --server.port=%port% > log.log &
echo "finish project process"
部署前端则需在构建环境设置node
首先在Configure System 配置环境变量
windows系统的Path的值则cmd命令输入Path复制下来,Linux则查看PATH命令为echo $PATH
然后在项目构建环境设置node环境变量和控制台输出
然后脚本
set source_name=dist
set source_file=G:\jenkins\jenkins-workspace\workspace\test-vue\
set deploy_path=G:\jenkins\deploy\test-vue\
set deploy_name=test_web
cd %source_file%
yarn install && yarn build
zip -r dist.zip dist
move %source_file%dist.zip %deploy_path%
copy %deploy_path%dist.zip "%deploy_path%dist-%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%.zip"
if exist %deploy_path%%deploy_name% (
rd /s /q %deploy_path%%deploy_name%
) else (
echo "not exist"
)
unzip -o -d %deploy_path% %deploy_path%dist.zip
ren %deploy_path%%source_name% %deploy_name%
若前端打包报错则看看有无这条
Treating warnings as errors because process.env.CI = true.
这条会将warning警告当成error处理,所以jenkins打包会报错
需要调整为false
在执行命令npm build之前设置 export CI=false,可在Jenkins或者前端构建命令语句中添加。
jenkins则在
Configure System配置添加一个CI环境变量
防止jenkins杀掉衍生进程,包括运行的java命令
所以需要在配置Configure System
添加两个环境变量
若是部署项目到windows环境运行
目前jenkins还是会kill掉java运行的进程
但找到一种方法,注册为windows service 服务,然后启动服务就不会被kill掉
用winsw将jar包做成window后台服务
前面的文章,将jar包打包成exe工具里有写