项目设置
1. 测试环境
测试环境用于测试开发者的开发好的代码, 即使有bug也可以通过测试环境中的测试来发现
General设置
源码管理设置
构建触发器设置
测试环境中使用提交触发自动部署,所以需要设置与Gitlab的连接,并设置触发允许
构建设置
连接sonarqube
执行脚本
2. 部署上线
部署上线版本不需要被Gitlab自动触发,所以移除了触发器设置的内容,取而代之的是参数化构建设置
选择Git Parameter从Git获取tag信息作为版本,并通过Name定义为变量
然后添加选项参数,通过名称定义为变量status,提供deploy和rollback选择,deploy对应部署rollback对应回滚操作
脚本编写
1. 测试环境部署脚本
#!/bin/shworkspace=$WORKSPACEid=$BUILD_ID#id=$git_version#job=$JOB_NAMEtarget=10.0.0.7target_dir=/usr/share/nginxcompress_name=$id-web.tar.gzweb_name=$id-webDEPLOY_METHOD=$statuscode_tar(){cd $workspace && tar zcf /tmp/$compress_name ./*}code_scp(){scp /tmp/$compress_name $target:$target_dir}code_xf(){ssh $target " cd ${target_dir} && mkdir ${web_name} && tar xf $compress_name -C $target_dir/$web_name"}code_ln(){ssh $target "cd $target_dir && rm -f html && ln -s ${web_name} $target_dir/html"}code_tarcode_scpcode_xfcode_ln
2. 线上环境部署脚本
线上环境的部署可能需要进行回滚操作,所以加入了一个case选择,根据在Jenkins页面选择的操作进行判断
#!/bin/shworkspace=$WORKSPACEid=$git_versiontarget=10.0.0.7target_dir=/usr/share/nginxcompress_name=$id-web.tar.gzweb_name=$id-webDEPLOY_METHOD=$statuscode_tar(){cd $workspace && tar zcf /tmp/$compress_name ./*}code_scp(){scp /tmp/$compress_name $target:$target_dir}code_xf(){ssh $target " cd ${target_dir} && mkdir ${web_name} && tar xf $compress_name -C $target_dir/$web_name"}code_ln(){ssh $target "cd $target_dir && rm -f html && ln -s ${web_name} $target_dir/html"}case $DEPLOY_METHOD indeploy)if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ]thenecho "重复构建!!!"elsecode_tarcode_scpcode_xfcode_lnfi;;rollback)code_ln;;esac
通知
微信通知
微信通知选用Jenkins插件库中的”Qy Wechat Notification Plugin“
另外还有使用脚本+企业应用的方法进行通知,但是过于麻烦,并不打算采用
