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插件

 

本文分享完畢,感謝支持點贊~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM