文章目录
脚本简介
- 基于运维统一脚本中,常见服务部署下的CICD相关组件的jenkins选项
- 可连接官方镜像仓库,pull镜像,然后再当前宿主机的机器上启动jenkins服务
脚本注解
- 该脚本为了人性化设置,选择所以的变量通过屏幕上用户输入的形式获取
- 需要根据实际情况填写信息
执行方式
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$1 33[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$1 33[0m "
}
info5(){
info1 "=============================================================================="
}
info6(){
echo -e " 33[33m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】 33[0m" " 33[91m$1 33[0m "
}
info7(){
echo -e " 33[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】 33[0m" " 33[32m$1 33[0m "
}
info8(){
echo -e " 33[31m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】 33[0m" " 33[35m$1 33[0m "
}
info9(){
echo -e " 33[32m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】 33[0m" " 33[36m$1 33[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