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

本文分享完毕,感谢支持点赞~~

原文地址:https://www.cnblogs.com/mike666/p/14037109.html