Jenkins 参数化shell脚本
由于日常工作中可能会遇到很多需要构建化参数化或者清理不同平台的缓存这些情况,这时候又不想手动执行
那就用上jenkins去跑shell脚本吧,方便可视化一些
Jenkins使用参数化清理Redis缓存
在 General 添加 > This project is parameterized > Choice Parameter > String Parameter
Choice Parameter 名称 Status 选项 Deploy Rollback 描述 Deploy: dev清理缓存 Rollback: test清理缓存 String Parameter 名称 Version 默认值 0
Choice Parameter 里填写对应的参数就可以,这些参数是对应下面的 shell 脚本做变量的
使用参数化构建Shell脚本
case $Status in Deploy) { ## 清理dev的redis缓存 sudo bash /etc/init.d/devredis.sh } ;; Rollback) { ## 清理test的redis缓存 sudo bash /etc/init.d/testsredis.sh } ;; *) exit ;; esac
里面涉及到清理缓存 redis.sh 脚本是在目标服务器上执行的
然后如果点 Deploy 构建的话就是执行 清理dev环境缓存,反之执行 Rollback 构建就是清理test环境缓存
如果变量 Deploy和 Rollback 不好听的话,可以随意修改的~~
构建打包java项目shell (部分内容)
在 General 添加 > This project is parameterized > Choice Parameter > String Parameter
Choice Parameter 名称 Status 选项 Deploy Rollback 描述 Deploy: 发布 Rollback: 回滚 String Parameter 名称 Version 默认值 0
Java构建命令
在 Build > Goals and options 添加
clean install -Dmaven.test.skip=true
在 Post Steps > Execute shell 添加
case $Status in Deploy) { echo "Status:$Status" echo "Version:$BUILD_NUMBER" SERVICE_NAME="ops-0.0.1-SNAPSHOT" SERVICE_PATH="/data/app/ops/" SERVICE_BACKUP="/data/backup/ops" BUILD_ID=DONTKILLME PIDS=`ps -ef |grep java | grep 8080 | awk '{print $2}'` if [ "$PIDS" != "" ];then /usr/bin/kill -9 $PIDS fi cd $SERVICE_PATH cp -rf $WORKSPACE/ops/target/$SERVICE_NAME.jar $SERVICE_PATH nohup /usr/bin/java -jar $SERVICE_PATH/$SERVICE_NAME.jar --server.port=8080 --spring.profiles.active=test >>/dev/null 2>&1 & #备份 mv $WORKSPACE/ops/target/$SERVICE_NAME.jar $SERVICE_BACKUP/$BUILD_NUMBER.jar } ;; Rollback) { echo "Status:$Status" echo "Version:$Version" SERVICE_NAME="ops-0.0.1-SNAPSHOT" SERVICE_PATH="/data/app/ops" SERVICE_BACKUP="/data/backup/ops" BUILD_ID=DONTKILLME rm -rf $SERVICE_PATH/$SERVICE_NAME.jar cp $SERVICE_BACKUP/$Version.jar $SERVICE_PATH/$SERVICE_NAME.jar PIDS=`ps -ef |grep java | grep 8080 | awk '{print $2}'` if [ "$PIDS" != "" ];then /usr/bin/kill -9 $PIDS fi cd $SERVICE_BACKUP nohup /usr/bin/java -jar $SERVICE_PATH/$SERVICE_NAME.jar --server.port=8080 --spring.profiles.active=test >>/dev/null 2>&1 & } ;; *) exit ;; esac
前端Vue打包shell
在 General 添加 > This project is parameterized > Choice Parameter > String Parameter
Choice Parameter 名称 Status 选项 Deploy Rollback 描述 Deploy: 发布 Rollback: 回滚 String Parameter 名称 Version 默认值 0
在 Post Steps > Execute shell 添加
case $Status in Deploy) { echo "Status:$Status" echo "version:$BUILD_NUMBER" NPM_PATH="/usr/local/bin/cnpm" FEF_PATH="/usr/local/bin/fef" BACKUP_PATH="/data/backup/pc" PROJECT_FILE="/data/app/pc/" cd $WORKSPACE $NPM_PATH install sudo $FEF_PATH test if [[ -d ${PROJECT_FILE} ]];then rm -rf $PROJECT_FILE fi cp -rf $WORKSPACE/dist $PROJECT_FILE #备份项目文件 cp -rf $WORKSPACE/dist $BACKUP_PATH/$BUILD_NUMBER-dist } ;; Rollback) { echo "Status:$Status" echo "version:$Version" BACKUP_PATH="/data/backup/pc" PROJECT_FILE="/data/app/pc/" if [[ -d ${PROJECT_FILE} ]];then rm -rf $PROJECT_FILE fi cp -rf $BACKUP_PATH/$Version-dist $PROJECT_FILE } ;; *) exit ;; esac
Docker打包构建脚本(参考)
参数化构建过程 git参数 名称 Tag 参数类型 标签 默认值 $Tag 构建执行shell ########################################### #!/bin/bash ############################################## echo "Status:$Status" echo "version:$BUILD_NUMBER" SERVICE_BACKUP="/data/backup/devops_net" /usr/bin/cp -rf $WORKSPACE/ $SERVICE_BACKUP/devops_net_$BUILD_NUMBER ############################################## REPOSITORY=1111.aliyuncs.com/devops_mike/opsnet:${Tag} echo '================开始打包镜像================' cd $SERVICE_BACKUP/devops_net_$BUILD_NUMBER/ASPDotNetCore docker build -t $REPOSITORY . docker rmi `docker images | grep '<none>' | awk '{print $3}'` echo '================开始推送镜像================' docker login --username=123456 --password=123456 1111.aliyuncs.com docker push $REPOSITORY #################################################################################################################### Execute shell ###################################################### #!/bin/bash REPOSITORY=1111.aliyuncs.com/devops_mike/opsnet:${Tag} echo '================开始部署镜像================' docker rm -f devopsnet |true docker image rm $REPOSITORY |true docker login --username=123456 --password=123456 1111.aliyuncs.com docker pull $REPOSITORY docker container run -d --name devopsnet -p 8888:5000 $REPOSITORY echo '================结束完成================'
docker编译这里需要安装Git Parameter插件
本文分享完毕,感谢支持点赞~~