一、背景
jenkins可以设置定时任务打包,也已手动点按钮打包,还可以通过执行http请求打包,今天我们就通过shell脚本,通过curl命令进行jenkins打包。
二、步骤
2.1 在jenkins上构建项目
设置触发器
2.2 通过shell脚本触发远程构建
#使用列表for循环所要运行的job名
jobs=(TdPluginAlarmManage报警管理插件4.4 TdPluginCaseManager案件管理插件4.4 TdPluginBaqWorkbench工作台管理插件4.4 \
TdPluginBelongingsManage涉案财务模块插件前台4.4 TdPluginCaseFileManage案卷管理模块插件前台4.4 TdPluginCaseTerminalZL \
TdPluginLogin法制登录插件4.4 TdPluginStatisticalManage统计管理插件4.4 TdPluginSystemSetting系统设置插件4.4 \
TdPluginWorkbench工作台管理插件4.4 TdPluginZhfzPublicTools公共插件4.4 TdZTPluginCabinetInquest前台4.4 \
TdZTPluginRoomManage房间管理插件后台4.4 微服务1TdAjjzServer4.4 微服务2TdSacwServer4.4 \
微服务3TdAGWGCommonServer4.4 微服务4TdAgWgRunServer4.4);
echo "打包个数:${#jobs[*]}"
echo "打包清单------------"
for item in ${jobs[*]};
doecho $item;
done
for variable in ${jobs[*]};
# 或者
# for variable in job1 job2 job3
do#获取下一次构建编号job_number=`curl --silent http://ip:port/job/$variable/api/json --user account:password |jq --raw-output '.nextBuildNumber'`#执行jobcurl -n -X POST http://ip:port/job/$variable/buildWithParameters --user --user account:password --data cp_branch='git分支'#查询job状态最多循环执行5次 for i in `seq 1 5` do#查询间隔时间,60s,启动下一个job最长间隔5分钟sleep 60#获取当前job运行结果##job_result=$(curl --silent http://ip:port/job/$variable/lastBuild/api/json --user account:password |jq --raw-output '.result')job_result=`curl --silent http://ip:port/job/$variable/$job_number/api/json --user account:password |jq --raw-output '.result'`echo "=================第$i次检测当前job名:${variable},job编号:$job_number,job运行状态: $job_result ====================================="if [[ $job_result = "SUCCESS" ]];thenecho "=================job:$variable构建完成,运行下一个 ==================="break else [[ $job_result = "null" ]]echo "job_$variable构建中......"fidone
done