zoukankan      html  css  js  c++  java
  • 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插件

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

  • 相关阅读:
    Node.js:util.inherits 面向对象特性【原型】
    Redbean:入门(二)
    Redbean:入门(一)
    PHP 文件操作函数大全
    Jquer的三种初始化方式
    Php+Redis 实现Redis提供的lua脚本功能
    Redis 五:配置主从复制功能
    Redis 四:存储类型之有序集合
    jQuery选择器总结(转)
    IDEA ECLIPSE Debug 卡住,Run正常
  • 原文地址:https://www.cnblogs.com/mike666/p/14037109.html
Copyright © 2011-2022 走看看