栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker脚本部署jenkins

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker脚本部署jenkins

文章目录
      • 脚本简介
      • 脚本注解
      • 执行方式
      • 脚本内容

脚本简介
  1. 基于运维统一脚本中,常见服务部署下的CICD相关组件的jenkins选项
  2. 可连接官方镜像仓库,pull镜像,然后再当前宿主机的机器上启动jenkins服务
脚本注解
  1. 该脚本为了人性化设置,选择所以的变量通过屏幕上用户输入的形式获取
  2. 需要根据实际情况填写信息
执行方式
sh start_jenkins.sh
脚本内容
#!/bin/bash
#该脚本用于测试环境部署jenkins
#所有者:北城半夏
#
#当前版本
#v1.0.1
###################################################

info(){
  echo -e "33[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】33[0m" "33[36m$133[0m "
}
info1(){
  echo -e "33[36m $1 33[0m "
}
info2(){
  echo -e "33[34m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】33[0m" "33[35m$133[0m "
}

info5(){
 info1 "==============================================================================" 
}
info6(){
  echo -e "33[33m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】33[0m" "33[91m$133[0m "
}
info7(){
  echo -e "33[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】33[0m" "33[32m$133[0m "
}

info8(){
  echo -e "33[31m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】33[0m" "33[35m$133[0m "
}
info9(){
  echo -e "33[32m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】33[0m" "33[36m$133[0m "
}
jenkins_run(){
   local images=`docker images --format {{.Repository}}:{{.Tag}}|grep ${jekins_version}` 
   local num=`docker images --format {{.Repository}}:{{.Tag}}|grep ${jekins_version}|wc -l`
if [ -d ${jekins_home} ];then
    info2 "当前挂载目录已存在,开始启动${jekins_name}"  
    chmod -R 777 ${jekins_home}
    else
          mkdir ${jekins_home} 
          chmod -R 777 ${jekins_home}
fi
 if [ ${num} -eq 1 ];then
        if [ `docker ps -a| grep ${jekins_name}|wc -l` -eq 1 ];then
                  docker rm -f ${jekins_name} &>/dev/null
                    [ $? -eq 0 ] && info6 "${jekins_name} rm success"
                            docker run -d -p ${jekins_port}:${jenkins_port1} --name ${jekins_name}  
                              --restart=unless-stopped -u root --privileged=true 
                             -v ${jekins_home}:/var/jenkins_home ${images} &>/dev/null
                            [ $? -eq 0 ] && info7 "${jekins_name} 的挂载路径是:${jekins_home}"

                 #  docker run -d -p ${jekins3_port}:8081 --name ${jekins3_name} ${images} &>/dev/null
        else
                    docker run -d -p ${jekins_port}:${jenkins_port1} --name ${jekins_name}  
                              --restart=unless-stopped  -u root --privileged=true
                             -v ${jekins_home}:/var/jenkins_home ${images} &>/dev/null
                             [ $? -eq 0 ] && info7 "${ } 的挂载路径是:${jekins_home}"

        fi
    ip_addr=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|grep -v 172.17.0.1|awk '{print $2}'|tr -d "addr:"|head -1`
       [ $? -eq 0 ] && info7 "${jekins_name}访问URL:http://${ip_addr}:${jekins_port}"
       [ $? -eq 0 ] && info7 "${jekins_name}启动成功"

else
      docker pull ${jekins_version}  &>/dev/null
      [ $? -eq 0 ] && info7 "${jekins_version}镜像拉去成功" ||info6 "请检查网络设置"
      jenkins_run
fi
}
rm_start(){
if [ `docker ps -a |grep ${jekins3_name} |wc -l` -eq 1 ];then
     docker rm -f ${jekins3_name} &>/dev/null
     info "${jekins3_name} rm success"
fi
}
start_jekins(){
  local name="jekins"  jekins3_HOME="/opt/jenkins" jekins3_port="80" jenkins_port1="8080"
  info5
  read -p "请输入${name}数据持久化存储目录(${jekins3_HOME}):" jekins_home
  read -p "请输入${name}容器启动的容器名称(${name}):" jekins_name
  read -p "请输入${name}容器启动的容器端口(${jekins3_port}):" jekins_port
  read -p "请输入${name}容器启动的镜像版本(jenkins/jenkins):" jekins_version
  #read -p "请输入${name}容器启动时${name}访问的URL(${GITLAB_url}):" GITLAB_url
  jekins_version=${jekins_version:-jenkins/jenkins:latest}
  jekins_name=${jekins_name:-jenkins}
  jekins_port=${jekins_port:-80}
  jekins_home=${jekins_home:-/opt/jenkins}

  if [ -z ${jekins_version} ] && [ -z ${jekins_name} ] && [ -z ${jekins_port} ]&& [ -z ${jekins_home} ];then
   info8 "请根据提示,输入所有的值"
   exit 0
 else
 info8 "第一次使用,选择启动方式必须是: run"
 read -p "选择${jekins_name}的启动方式:(run|restart|start|stop|rm|status):" jekins_start_run1
 if [ -z ${jekins_start_run1} ];then
       info6 "请重新输入"    
       info5
       CICD_assembl_run
 else
   case $jekins_start_run1 in
     'run')   
         jenkins_run;;
     'status')
         info3
         docker ps |grep  ${jekins_name};;
         #[ $? -eq 0 ] && info " ${jekins_name} Restart successful";;
     'restart')
         rm_start
         Nexus3_run
         [ $? -eq 0 ] && info " ${jekins_name} Restart successful";;
     'start')
            docker start ${jekins_name} &>/dev/null
            [ $? -eq 0 ] &&  info " ${jekins_name} Start successful";;
     'stop')
           docker stop ${jekins_name} &>/dev/null
           [ $? -eq 0 ] &&   info " ${jekins_name} Stop successful";;
     'rm')
              docker rm -f ${jekins_name} &>/dev/null
           [ $? -eq 0 ] &&  info " ${jekins_name} delete successful";;
      '*')   
              info "脚本执行错误,请检查后继续";;
   esac
  fi
 fi
}
start_jekins
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号