设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 2359|回复: 0

[经验分享] Jenkins 自动化部署上线

[复制链接]

尚未签到

发表于 2018-9-16 09:12:46 | 显示全部楼层 |阅读模式
Jenkins 自动化部署上线
  标签(空格分隔): Jenkins
  由于51cto格式问题,可以直接访问https://www.abcdocker.com/abcdocker/3174 查看原文
  [TOC]
  ##一、Jenkins是什么
  

Jenkins是一款自包含的开源自动化服务,可用于自动执行与构建,测试和交付或部署软件有关的各种任务。  
Jenkins目前可以通过本地系统软件包Docker进行安装,甚至可以通过任何安装了Java运行环境的计算机独立运行
  

  ##二、上线流程图

  既然我们说到自动化上线,我们就不得不说说一个项目上线的流程.只有规范起来才可以做到不出事故!

  上线流程图如下图所示
DSC0000.png

  ##三、Jenkins安装配置

  Jenkins依赖Java环境,我们需要安装Java环境以及相关的环境准备

  

###关闭防火墙  
$ iptables -F
  
$ iptables -X
  
$ systemctl stop firewalld
  
$ systemctl disable firewalld
  

  
###安装yum源
  
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  
$ yum clean all && yum makecache
  

  1.下载Jdk包
DSC0001.png

  下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  上传jdk包到服务器
  

###解压拷贝jdk  
$ tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
  
$ ln -s /usr/local/jdk1.8.0_171/ /usr/local/jdk
  
$ ln -s /usr/local/jdk/bin/java /usr/bin/java
  

  
###设置环境变量
  
$ vim /etc/profile
  
export JAVA_HOME=/usr/local/jdk

  
export>  
export PATH=$JAVA_HOME/bin:$PATH
  

  
$ source  /etc/profile
  

  2.安装Jenkins
  

$ wget  -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo  
$ rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
  
$ yum install jenkins -y
  

  
$ systemctl start jenkins
  
##如果我们启动Jenkins出现错误可以直接使用systemctl status jenkins查看错误
  

  jenkins相关目录释义:
  

(1)/usr/lib/jenkins/:jenkins安装目录,war包会放在这里。  
(2)/etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
  
(3)/var/lib/jenkins/:默认的JENKINS_HOME。
  
(4)/var/log/jenkins/jenkins.log:jenkins日志文件。
  

  检查端口是否存在
DSC0002.png

  3.配置Jenkins
DSC0003.png

  Jenkins有安全策略,我们按照提示拷贝验证码即可
DSC0004.png

  将验证码复制到Web框里
DSC0005.png

  我们这里使用推荐就可以了,因为后期我们都可以在安装
DSC0006.png

  安装插件中,有的插件会因为网络问题无法安装成功
DSC0007.png

  我们这里可以创建一个管理员,或者直接使用admin
  我们最好不要直接使用admin
DSC0008.png

DSC0009.png

  安装完成访问地址:iP:8080
DSC00010.png

  到这里我们Jenkins已经安装成功,剩下的就是配置插件和配置环境
DSC00011.png

  因为我们目前什么都没有需要安装插件,点击下步安装插件
DSC00012.png


  为了模拟环境我们需要安装Jenkins一些相关插件
  下面2个maven 插件都需要勾选
  插件名称:maven lntergration

DSC00013.png

  我们勾选安装重启
DSC00014.png

DSC00015.png

  安装完成后如下图所示
  默认是没有下面的maven项目的
DSC00016.png

  4.Jenkins配置项目
  配置SVN地址
  因为我是新建的Jenkins目录,没有权限,所以需要创建一个用于认证.
DSC00017.png


  填写SVN地址,因为我这里的svn已经链接到ldap,所以不需要输入svn的密码,默认这里是svn的用户和密码

  具体文章可以参考 VisualSVN 迁移至Linux SVN+Apache+ssl集成LDAP
DSC00018.png

  认证成功之后
DSC00019.png

  了解maven 配置
  首先我们的svn分支下面需要有pom.xml
DSC00020.png

  继续往下
  ↓
  ↓
  ↓
  ↓
  因为我们只安装maven的插件,并没有安装maven服务,所以这里需要我们配置
DSC00021.png

  我们就在这里添加一个名字,maven就自动安装了
DSC00022.png


  Maven安装完成了,需要依赖吧都是从maven.apache.org下载会比较慢,所以我们指定私服的地址,因为在实际生产中也都是使用私服的。
  在maven的配置文件里面也需要配置  配置文件conf/settings.xml 因为我们所使用的是Jenkins的自动安装,而不是指定路径所以我们要查到这个配置文件

  maven 自动安装的配置路径
DSC00023.png

  配置Maven仓库地址
  这里配置的都是私服地址
  相关文章  Jenkins+Maven+SVN+Nexus 搭建持续集成环境
DSC00024.png

  配置Maven 镜像地址
DSC00025.png

  配置Maven 编译参数   [研发都会]
  相关文章:maven 编译命令
DSC00026.png

  

这个pom.xml里面配置是私服的地址  
因为代码里面有很多东西是需要拉去依赖包,这些依赖包就存放在本地的私有仓库里(Nexus)
  

  代码中pom.xml配置如下
  私有仓库的地址
DSC00027.png

  5.构建测试
DSC00028.png

  控制台输出说明
DSC00029.png

DSC00030.png

DSC00031.png

  6.Jenkins 工程目录
DSC00032.png

  可以通过修改Jenkins主目录
DSC00033.png

  Jenkins打包好后的目录,这个war包就是我们需要拷贝的tomcat下面的
DSC00034.png

  ##四、Jenkins 自动化部署项目案例
  因为目前环境原因,我这里只是截图Jenkins发布的流程(本次演示只是针对测试环境日常发布版本)
  ###(1) Java 环境演示 [Jenkins和Tomcat在一台服务器上]
  1.Jenkins 配置
DSC00035.jpg

  SVN部分配置
DSC00036.png

  maven及脚本设置
DSC00037.png

  2.不发脚本配置如下:
  相关参考:Jenkins可用环境变量列表
  脚本的存放路径可以在系统管理->全局配置->Jenkins路径
  

Last login: Thu Jun 28 18:01:59 2018 from 172.16.29.39  
[root@tomcat ~]# cat /jenkins/deploy.sh
  
#!/bin/bash
  

  
#
  
# Jenkins工程构建通用TOMCAT部署脚本
  
# @author abcdocker
  
# @create_time 2017-08-19
  
#
  
# 在Jenkins内配置部署单元参数
  
#      参数格式:MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH  MAVEN模块名称:需要部署的目标TOMCAT绝对路径
  
#      只有单个部署单元且没有Maven子模块时,模块名称参数可以没有,参数格式为:TOMCAT_ABSOLUTE_PATH
  
#
  
# 注意:
  
#      在本部署脚本内会执行TOMCAT启动脚本,为避免Jenkins在构建成功以后杀掉所有衍生的后台进程,需要在Jenkins内配置全局环境变量 BUILD_ID 值为 allow_to_run_as_daemon
  
#
  
#
  

  
DEPLOY_TARGET_TOMCAT=$TOMCAT
  

  
#校验部署参数,不能为空
  
if [ -z "$DEPLOY_TARGET_TOMCAT" ]
  
then
  echo
  echo 部署参数为空,部署失败!
  echo "#####################################################################"
  echo
  echo 单个部署单元参数格式:
  echo          MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH MAVEN模块名称:需要部署的目标TOMCAT绝对路径
  echo
  echo 多个部署单元参数格式:(多个部署单元使用空格分割)
  echo          MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH
  echo
  echo "#####################################################################"
  exit 1
  
fi
  

  
echo
  
echo 部署参数:${DEPLOY_TARGET_TOMCAT}
  

  
TOMCAT_ARR=${DEPLOY_TARGET_TOMCAT//;/ }
  
ARR=($TOMCAT_ARR)
  
ARR_LEN=${#ARR
  • }
      
    echo 共 ${ARR_LEN} 个部署单元
      

      
    i=1
      
    #获取Jenkins传入的目标TOMCAT组
      
    for T in $TOMCAT_ARR
      
    do
      echo
      echo 开始 处理第 ${i} 个部署单元
      echo 第一个部署单元:$T
      

      #获取目标TOMCAT的WAR路径和TOMCATA的绝对路径
      TOMCAT_PARAM=(${T//:/ })
      MODULE_NAME=${TOMCAT_PARAM[0]}
      TARGET_TOMCAT_PATH=${TOMCAT_PARAM[1]}
      WAR_PATH="$WORKSPACE/$MODULE_NAME/target/*.war"
      

      echo 部署单元模块名称:"${MODULE_NAME}"
      echo 部署WAR包路径:"${WAR_PATH}"
      echo 部署TOMCAT路径:"${TARGET_TOMCAT_PATH}"
      

      #需要考虑MAVEN单模块下的部署问题
      #if [ "${#ARR
  • }" -eq 1 -a -z "$TARGET_TOMCAT_PATH" ]
      if [ "$ARR_LEN" -eq 1 -a -z "$TARGET_TOMCAT_PATH" ]
      then
      #MAVEN过程没有子模块,单个部署单元
      TARGET_TOMCAT_PATH=$MODULE_NAME
      MODULE_NAME="NULL"
      fi
      

      #校验参数,WORKSPACE变量来自于Jenkins环境变量
      if [ -z "$MODULE_NAME" -o ! -f $WAR_PATH ]
      then
      echo 错误:MAVEN部署模块名称 参数为空 或 找不到WAR包!
      echo 部署失败!
      exit 1
      fi
      

      if [ -z "$TARGET_TOMCAT_PATH" -o ! -d "$TARGET_TOMCAT_PATH" ]
      then
      echo 错误:目标TOMCAT绝对路径 参数为空 或 该TOMCAT目录不存在!
      echo 部署失败!
      exit 1
      fi
      

      echo 开始清理目标TOMCAT启动进程...
      TOMCAT_PID=`ps -ef |grep "$TARGET_TOMCAT_PATH" |grep  "start" |awk '{print $2}'`
      if [ -n "$TOMCAT_PID" ]
      then
      echo TOMCAT_${i},PID${TOMCAT_PID},正在结束该进程...
      kill -9 $TOMCAT_PID && echo PID${TOMCAT_PID} 已被干掉!
      else
      echo TOMCAT_${i} 进程未启动!
      fi
      

      echo 开始清理目标TOMCAT缓存...
      rm -rf $TARGET_TOMCAT_PATH/webapps/*
      rm -rf $TARGET_TOMCAT_PATH/logs/*
      rm -rf $TARGET_TOMCAT_PATH/work/*
      

      echo 开始部署WAR包...
      cp -a $WAR_PATH $TARGET_TOMCAT_PATH/webapps/ROOT.war && echo WAR包部署完毕。
      

      echo 开始启动目标TOMCAT服务...
      sleep 10
      /bin/bash $TARGET_TOMCAT_PATH/bin/startup.sh
      

      echo 开始配置web目录的FTP权限...
      #启动过程会自动解压WAR包,所以在这里需要等待WAR包解压完成再调整目录权限
      sleep 30
      chown -R vftpuser.vftpuser ${TARGET_TOMCAT_PATH}/webapps/ && echo 目录权限配置完毕。
      

      echo 部署成功
      echo 完成 第 ${i} 个部署单元处理。
      echo
      

      ((i++))
      
    done
      

      

      3.构建效果如下图所示:
    DSC00038.gif

      ###(2) Java 环境演示 [Jenkins和Tomcat不在一台服务器上]
      上面的脚本是针对Jenkins和Tomcat都在相同的目录,有的时候我们测试环境会存在不在一台服务器的情况,脚本如下
      

    只是脚本简单的修改  
    [root@tomcat ~]# cat /jenkins/ysc.sh
      
    #!/bin/bash
      

      
    #
      
    # Jenkins工程构建通用TOMCAT部署脚本
      
    # @author 刘曙
      
    # @create_time 2017-08-19
      
    #
      
    # 在Jenkins内配置部署单元参数
      
    #      参数格式:MAVEN_MODULE_NAME:TOMCAT_ABSOLUTE_PATH  MAVEN模块名称:需要部署的目标TOMCAT绝对路径
      
    #      只有单个部署单元且没有Maven子模块时,模块名称参数可以没有,参数格式为:TOMCAT_ABSOLUTE_PATH
      
    #
      
    # 注意:
      
    #      在本部署脚本内会执行TOMCAT启动脚本,为避免Jenkins在构建成功以后杀掉所有衍生的后台进程,需要在Jenkins内配置全局环境变量 BUILD_ID 值为 allow_to_run_as_daemon
      
    #
      
    #
      

      
    DEPLOY_TARGET_TOMCAT=$YSC
      
    HOST=root@172.16.1.35
      
    #校验部署参数,不能为空
      
    if [ -z "$DEPLOY_TARGET_TOMCAT" ]
      
    then
      echo
      echo 部署参数为空,部署失败!
      echo "#####################################################################"
      exit 1
      
    fi
      

      
    echo
      
    echo 部署参数:${DEPLOY_TARGET_TOMCAT}
      

      
    TOMCAT_ARR=${DEPLOY_TARGET_TOMCAT//;/ }
      
    ARR=($TOMCAT_ARR)
      
    ARR_LEN=${#ARR
  • }
      
    echo 共 ${ARR_LEN} 个部署单元
      

      
    i=1
      
    #获取Jenkins传入的目标TOMCAT组
      
    for T in $TOMCAT_ARR
      
    do
      echo
      echo 开始 处理第 ${i} 个部署单元
      echo 第一个部署单元:$T
      

      #获取目标TOMCAT的WAR路径和TOMCATA的绝对路径
      TOMCAT_PARAM=(${T//:/ })
      MODULE_NAME=${TOMCAT_PARAM[0]}
      TARGET_TOMCAT_PATH=${TOMCAT_PARAM[1]}
      #WAR_PATH="/jenkins/workspace/ysc-all/${MODULE_NAME}/target/*.war"
      WAR_PATH="${WORKSPACE}/${MODULE_NAME}/target/*.war"
      

      echo 部署单元模块名称:"${MODULE_NAME}"
      echo 部署WAR包路径:"${WAR_PATH}"
      echo 部署TOMCAT路径:"${TARGET_TOMCAT_PATH}"
      

      #判断IP是否有相关目录
      ssh 172.16.1.35 "[ -d $TARGET_TOMCAT_PATH ]" >/dev/null 2>&1
      if [ $? != 0 ];then
      echo 错误
      else
      echo  正确
      fi
      

      #校验参数,WORKSPACE变量来自于Jenkins环境变量
      if [ -z "$MODULE_NAME" -o ! -f $WAR_PATH ]
      then
      echo 错误:MAVEN部署模块名称 参数为空 或 找不到WAR包!
      echo 部署失败!
      exit 1
      fi
      

      #scp 软件包
      ssh $HOST /etc/init.d/${MODULE_NAME} stop
      ssh 172.16.1.35 "[ -d $TARGET_TOMCAT_PATH/webapps/ROOT/ ]" >/dev/null 2>&1
      if [ $? = 0 ];then
      ssh 172.16.1.35 rm -rf $TARGET_TOMCAT_PATH/webapps/ROOT
      if [ $? = 0 ];then
      scp  $WAR_PATH root@172.16.1.35:$TARGET_TOMCAT_PATH/webapps/ROOT.war && echo WAR包部署完毕。
      echo $TARGET_TOMCAT_PATH is OK
      else
      echo 删除$TARGET_TOMCAT_PATH is error
      fi
      else
      echo "not found $TARGET_TOMCAT_PATH/webapps/ROOT"
      scp  $WAR_PATH root@172.16.1.35:$TARGET_TOMCAT_PATH/webapps/ROOT.war && echo WAR包部署完毕。
      ssh $HOST /etc/init.d/${MODULE_NAME} restart
      fi
      

      
    ####################启动文件
      

      
    done
      #scp /home/config.properties/ysc/${MODULE_NAME}.js root@172.16.1.35:$TARGET_TOMCAT_PATH/webapps/ROOT/web/js/basePath.js
      ssh $HOST /etc/init.d/${MODULE_NAME} restart
      

      Jenkins配置如下修改
    DSC00039.jpg

    DSC00040.png

      修改完成后我们构建演示
    DSC00041.gif

      提示:这种环境下配置文件都是通过maven build进行控制,也就是通过研发控制配置文件
      +
      +
      +
      +
      ###(3) Java 环境演示 [上线脚本]
      线上环境演示
      我们的上线流程如下:
    DSC00042.png

      Jenkins配置如下:
    DSC00043.png

    DSC00044.png

    DSC00045.png

      +
      +
      +
      +
      +
      1.首先测试环境脚本:
      

    [root@tomcat ~]# cat /server/scripts/.upgrade-smscenter.sh  
    #!/bin/bash
      
    WAR="/jenkins/workspace/portal-smscenter/bxg-sms-center-web/target/*.war"
      
    Path="/data/hub/bxg-smscenter/`date +%Y%m%d`/"
      

      
    scp_war(){
      

      
    if [ ! -d $Path ];then
      ssh root@file-server mkdir -p $Path
      scp $WAR root@file-server:$Path
      
    else
      scp $WAR root@file-server:$Path
      
    fi
      
    }
      
    ssh_file(){
      ssh root@file-server "/bin/bash /server/script/bxg/bxg-smscenter.sh"
      
    }
      
    scp_war
      
    ssh_file
      

      2.跳板机脚本修改
      

    [root@File-server1 ~]# cat /server/script/bxg/bxg-smscenter.sh  
    #!/bin/bash
      
    HOST=online-server2
      
    WAR="/data/hub/bxg-smscenter/`date +%Y%m%d`"
      
    DIR="/application/smscenter/webapps/ROOT/"
      
    function scp_file {
      if `ssh root@$HOST "[ ! -d $WAR ]"`;then
      ssh root@$HOST "mkdir -p $WAR"
      fi
      scp $WAR/*.war root@$HOST:$WAR/
      echo "scp $WAR/*.war root@$HOST:$WAR/"
      
    }
      
    ssh_deploy(){
      ssh root@$HOST "/bin/bash /server/scripts/deploy_smscenter.sh"
      
    }
      
    scp_file
      
    ssh_deploy
      

      3.web 服务器脚本
      

    [root@online-server2 ~]# cat /server/scripts/deploy_smscenter.sh  
    #!/bin/bash
      
    WAR="/data/hub/bxg-smscenter/`date +%Y%m%d`"
      
    OBJECT="/application/smscenter/webapps/ROOT/"
      
    Backup="/data/tomcat/bxg-smscenter-`date +%Y%m%d`"
      
    SCR_D="/application/smscenter/webapps/ROOT"
      
    #config="/data/bak"
      

      
    backup_tar(){
      tar zcvf $Backup.tar.gz $SCR_D/
      echo "为了防止意外cp整个项目目录存放"
      cp -a $SCR_D/ $Backup
      rm -rf $OBJECT/*
      
    }
      

      
    cp_war(){
      unzip $WAR/*.war -d $SCR_D/
      
    }
      

      
    cp_config(){
      cat $Backup/WEB-INF/classes/application-prod.properties >$SCR_D/WEB-INF/classes/application-prod.properties
      /etc/init.d/smscenter restart
      
    }
      
    backup_tar
      
    cp_war
      
    cp_config
      
    [root@online-server2 ~]#
      

      相关文章  企业必会技能 tomcat
      +
      +
      +
      +
      ###(4) NodeJs 环境演示 [上线脚本]
      node 环境上线流程
      Jenkins配置如下 [node项目不适用maven,所以可以不用创建maven项目,直接在Jenkins创建普通项目就可以]
    DSC00046.png

    DSC00047.png

      1.测试环境脚本
      

    [root@tomcat ~]# cat /server/scripts/mobile/mobile.sh  
    #!/bin/bash
      
    source /etc/profile
      

      
    HOST=file-server
      
    BASE_DIR=/server/scripts/mobile/m
      
    url=$1
      
    server=$2
      
    DATE=`date +%Y%m%d`
      

      
    tar(){
      
    rm -rf $BASE_DIR
      

      [ -d $BASE_DIR ] || mkdir $BASE_DIR
      cd $BASE_DIR
      echo "##########################################################"
      echo "代码拉取中!!!"
      svn co -q $url/ .
      echo "##########################################################"
      

      
    }
      

      
    cp(){
      

      cd ${BASE_DIR}
      /bin/tar -zcvf m_${DATE}.tar.gz ./*
      echo "##########################################################"
      echo "文件已经打包完成! 正在拷贝中!!!"
      echo "##########################################################"
      sleep 5
      scp  m_${DATE}.tar.gz root@$HOST:/data/hub/bxg-mobile/
      echo "##########################################################"
      echo "文件已经拷贝完成! 正在上传服务器中!!!"
      echo "##########################################################"
      ssh root@file-server "/bin/bash /server/script/bxg/bxg-mobile.sh $server"
      

      
    }
      

      
    tar
      
    cp
      
    [root@tomcat ~]#
      

      2.跳板机脚本
      

    [root@File-server1 ~]# cat /server/script/bxg/bxg-mobile.sh  
    #!/bin/bash
      
    HOST=$1
      
    Mobile_tar="/data/hub/bxg-mobile"
      
    DIR="/application/node"
      
    DATE=`date +%Y%m%d`
      

      
    scp_file(){
      if `ssh root@$HOST "[ ! -d $Mobile_tar ]"`;then
      ssh root@$HOST "mkdir -p $Mobile_tar"
      fi
      scp $Mobile_tar/m_${DATE}.tar.gz root@$HOST:$DIR/
      sleep 3
      echo "   "
      echo "##########################################################"
      echo "File-server 正在拷贝 ${HOST}!!!"
      sleep 3
      echo "##########################################################"
      
    }
      

      
    ssh_deploy(){
      echo "Hi"
      ssh root@$HOST "/bin/bash /server/scripts/bxg/bxg-mobile.sh"
      
    }
      

      
    scp_file
      
    ssh_deploy
      

      3.web 发布脚本
      

    [root@iZbp11tefvghtcfn5mudgdZ ~]# cat /server/scripts/bxg/bxg-mobile.sh  
    #!/bin/bash
      
    source /etc/profile
      
    DIR="/application/node"
      
    DATE=`date +%Y%m%d`
      

      
    Backup="/application/node/m/"
      
    BAK="/data/hub/bxg-mobile"
      

      
    backup_tar(){
      echo "为了防止意外cp整个项目目录存放"
      cp -ar $Backup ${BAK}/mobile_$DATE
      echo "online-server 原目录拷贝备份完成!"
      
    }
      

      
    cp_war(){
      /etc/init.d/mobile stop
      #mv $Backup /tmp/m_${DATE} && rm -rf /tmp/m_${DATE}
      rm -rf $Backup
      mkdir $Backup && cd /application/node/
      tar xf m_${DATE}.tar.gz -C $Backup
      

      
    }
      
    npm_config(){
      cd $Backup
      cnpm install
      npm run build-prod
      npm run start-prod &>/var/log/mobile_${DATE}.log &
      

      
    }
      

      
    C(){
      echo "++++++++++++++++++++++++++++++++++++++++++++++++++++"
      curl  -I 127.0.0.1:3000
      echo "###################################################"
      echo "若是200 服务启动正常! 可以启动另一台!"
      echo "###################################################"
      
    }
      

      
    backup_tar
      
    cp_war
      
    npm_config
      
    C
      

      +
      +
      +
      +
      Jenkins 构建结果如下:
    DSC00048.gif

      相关文章 Node.js 环境搭建
      总结:Jenkins自动化不是运维一个人就可以完成的,需要研发的参与,本文只是给大家展示一下我公司的自动化,我眼里所谓的自动化. 希望大家不喜勿喷,对文章有意见或建议请在评论留言哦~




  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-584385-1-1.html 上篇帖子: 利用jenkins进行持续集成和持续部署 下篇帖子: jenkins上的执行者数量的设置
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表