由於日常工作中可能會遇到很多需要構建化參數化或者清理不同平台的緩存這些情況,這時候又不想手動執行
那就用上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插件
本文分享完畢,感謝支持點贊~~