zoukankan      html  css  js  c++  java
  • jenkins 自由风格项目

    创建项目

    丢弃旧的构建

    参数化构建过程

    添加代码库

    构建

     

     

     部署脚本

    [root@node2 jenkins]# cat deploy_web.sh 
    #!/bin/sh 
    
    # 工作目录
    CODE_DIR=$WORKSPACE
    # 压缩目录
    TAR_DIR="/data/jenkins/${JOB_NAME}/"
    # 文件夹及文件名
    FILE_DIR="${TAG_VERSION}_${JOB_BASE_NAME}"
    # 压缩文件全称
    PACKAGE="${FILE_DIR}.tar.gz"
    
    # 远程部署的服务器列表
    REMOTE_IP='172.16.0.64'
    # 远程部署服务器账号
    REMOTE_USER=root
    # 远程端口
    REMOTE_PORT=22
    # 远程部署目录
    REMOTE_DIR='/usr/share/nginx/'
    
    
    if [ ! -d ${TAR_DIR} ];then
        mkdir ${TAR_DIR} -p
        echo "创建文件夹: ${TAR_DIR}"
    fi
    
    builder_package() { 
        echo "--------------------------[ compress PACKAGE ]---------------------------"
        cd ${CODE_DIR} && tar zcf ${TAR_DIR}${PACKAGE} ./*
        if [ $? -eq 0 ]; then
            echo "打包成功: ${TAR_DIR}${PACKAGE}"
        else
            echo "打包失败: ${TAR_DIR}${PACKAGE}"
            exit 1
       fi                            
    }
    
    scp_package() {
        echo "--------------------------[ remote rsync  ]---------------------------"
        for IP in ${REMOTE_IP};do
            rsync -arq --port=${REMOTE_PORT} ${TAR_DIR}${PACKAGE} ${REMOTE_USER}@${IP}:${REMOTE_DIR}
            if [ $? -eq 0 ]; then
                echo "远程拷贝成功: $IP - ${TAR_DIR}${PACKAGE}"
            else
                echo "远程拷贝失败: $IP - ${TAR_DIR}${PACKAGE}"
                exit 1
            fi
        done
    }
    
    remote_untar() {
        echo "--------------------------[ remote untar  ]---------------------------"
        for IP in ${REMOTE_IP};do
            ssh $IP "mkdir ${REMOTE_DIR}${FILE_DIR}"
            ssh $IP "cd $REMOTE_DIR && tar xf  ${PACKAGE} -C ${REMOTE_DIR}${FILE_DIR}"
            ssh $IP "cd $REMOTE_DIR && rm -rf ${PACKAGE}"
            if [ $? -eq 0 ]; then
                echo "解压成功: $IP - ${PACKAGE}"
            else
                echo "解压失败: $IP - ${PACKAGE}"
                exit 1
            fi
        done
    }
    
    remote_ln() {
        # 确保软件连目录原本就是软连接目录
        # ssh $REMOTE_IP "cd $REMOTE_DIR && ln -snf  ${REMOTE_DIR}/${TAR_NAME} html"
        echo "--------------------------[ remote ln  ]---------------------------"
        for IP in ${REMOTE_IP};do
            ssh $IP "cd $REMOTE_DIR && rm -rf html  && ln -s ${REMOTE_DIR}${FILE_DIR} html"
            if [ $? -eq 0 ]; then
                echo "软连接成功: $IP - ${FILE_DIR}"
            else
                echo "软连接失败: $IP - ${FILE_DIR}"
                exit 1
            fi
        done
    
    }
    
     
    main() {
        builder_package;
        scp_package;
        remote_untar;
        remote_ln;
    }
    case $pattern in
        deploy)
            if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
                echo "构建失败该 ${TAG_VERSION} 版本号已部署"
                exit 1
            else
                echo "----------    开始发布 版本:${TAG_VERSION} --------"
                main
                echo "----------    完成发布 版本:${TAG_VERSION} --------"
            fi
            ;;
        rollback)
            echo "----------    开始回滚 版本:${TAG_VERSION} --------"
            remote_ln;
            echo "----------    完成回滚 版本:${TAG_VERSION} --------"
            ;;
        *)
          echo "Usage: $0 {deploy | rollback }"
          exit 1
          ;;
    esac
    

      

  • 相关阅读:
    交叉编译fw_printenv
    解压 xxxx.cpio.gz.u-boot
    创建Uboot 环境变量 bin 文件
    Linux快速显示图片
    移动终端的GPU显卡介绍
    Video Mode Timings
    change systemd service
    device tree DTB DTC 相互转换
    如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)
    解决h5在ios 微信中 input框键盘收起 页面底部留白
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/13412971.html
Copyright © 2011-2022 走看看