1、新建任务->构建一个自由风格的软件项目 点击 “确定”
2、点击 新创建 的任务 ,出行如下图
3、配置- 参数化构建过程
4、配置-源码管理
5、配置-构建执行shell
示例代码如下:
#!/bin/bash
#################单纯批量发布##################################################################################
mvn clean install -DskipTests=true
cd /root/.jenkins/workspace
scp -r springcloud-ucenter-test root@10.125.211.62:/data
scp -r springcloud-ucenter-test root@10.125.211.63:/data
cmd="chmod +x -R /data/*;cd /data/springcloud-ucenter-test/sh; ./service.sh restart test"
ssh root@10.125.211.62 $cmd
ssh root@10.125.211.63 $cmd
#################批量灰度发布,并备份发布历史支持回滚##################################################################################
#项目中运行文件放在目录
PROJECTNAME="map-gateway-server"
#运行服务器 多个服务器之间使用空格隔开
SEVICEIP="10.125.211.23"
#编译结果目录
COMPILEDIR=/root/.jenkins/workspace/$JOB_NAME
#归档目录
ARCHIVEDIR=/root/.jenkins/jobs/$JOB_NAME/builds/$version/archive
#部署目录
DEPLOYDIR=/data/$JOB_NAME
case $state in
deploy)
#删除归档目录4次的数据
DELETEDIR=0
((DELETEDIR = $BUILD_NUMBER-4))
rm -rf /root/.jenkins/jobs/$JOB_NAME/builds/$DELETEDIR
#执行编译部署
mvn clean install -DskipTests=true
for remoteip in $SEVICEIP;
do
#远程创建目录
# ssh root@$SEVICEIP "mkdir -p $DEPLOYDIR/$PROJECTNAME/target"
ssh root@$remoteip "mkdir -p $DEPLOYDIR"
#上传数据
scp -r $COMPILEDIR/sh/* root@$remoteip:$DEPLOYDIR
scp -r $COMPILEDIR/$PROJECTNAME/target/$PROJECTNAME.jar root@$remoteip:$DEPLOYDIR
ssh root@$remoteip "chmod +x -R "$DEPLOYDIR"/*;cd "$DEPLOYDIR"; ./service.sh "$PROJECTNAME" restart 8850 dev"
done
;;
rollback)
#echo $state $version $BUILD_NUMBER $JOB_NAME
#删除服务器上文件
#ssh root@$SEVICEIP "cd "$DEPLOYDIR"/; rm -rf *"
for remoteip in $SEVICEIP;
do
scp -r ${ARCHIVEDIR}/sh/* root@$remoteip:$DEPLOYDIR
scp -r ${ARCHIVEDIR}/$PROJECTNAME/target/$PROJECTNAME.jar root@$remoteip:$DEPLOYDIR
ssh root@$remoteip "chmod +x -R "$DEPLOYDIR"/*;cd "$DEPLOYDIR"; ./service.sh "$PROJECTNAME" restart 8850 dev"
done
;;
*)
exit
;;
esac
关于“service.sh”的脚本,参考地址:service.sh
6、配置-构建后的操作-归档成品
保存
7、构建任务
(1)deploy时,version版本无需理会
(2)rollback时,version版本填写左侧构建任务列表的序号即可