脚本简介
- 基于运维统一脚本中,常见服务部署下的CICD相关组件的gitlab选项
- 可连接官方镜像仓库,pull镜像,然后再当前宿主机的机器上启动gitlab服务
注意:
- gitlab的镜像相对较大,且网速不好的情况下下载速度比较慢(建议手动pull)
- docker pull gitlab/gitlab-ce:11.10.4-ce.0
- 镜像版本可通过镜像仓库自行更换
脚本注解
- 该脚本为了人性化设置,选择所以的变量通过屏幕上用户输入的形式获取
- 如果不填写,选用默认值是,其他都可以不变,但是提示下面的内容是,需要根据实际情况添加本机ip地址
请输入gitlab容器启动时gitlab访问的URL(http://192.168.1.129):
注意:
- 格式必须是http:// 开头的
- ip地址是本机的ip地址即可
执行方式
sh start_gitlab.sh
脚本内容
#!/bin/bash
#该脚本用于测试环境部署gitlab
#所有者:北城半夏
#
#当前版本
#v1.0.1
###################################################################
info(){
echo -e "\033[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[36m$1\033[0m "
}
info1(){
echo -e "\033[36m $1 \033[0m "
}
info5(){
info1 "=============================================================================="
}
info9(){
echo -e "\033[32m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[36m$1\033[0m "
}
info8(){
echo -e "\033[31m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[35m$1\033[0m "
}
info6(){
echo -e "\033[33m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[91m$1\033[0m "
}
info7(){
echo -e "\033[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[32m$1\033[0m "
}
###################################################################
gitlab_run(){
[ ! -d /opt/gitlab ] && mkdir ${GITLAB_HOME}
docker run -d --detach \
--env GITLAB_OMNIBUS_CONFIG="external_url ${GITLAB_url}; gitlab_rails['lfs_enabled'] = true; nginx['listen_port'] = ${GITLAB_port}" \
-p ${gitlab_port}:80 \
--name gitlab \
--restart always \
--volume $gitlab_home/config:/etc/gitlab \
--volume $gitlab_home/logs:/var/log/gitlab \
--volume $gitlab_home/data:/var/opt/gitlab \
${gitlab_version} >/dev/null
[ $? -eq 0 ] && info9 "${gitlab_name}启动成功"
}
start_gitlab(){
local name="gitlab" GITLAB_HOME="/opt/gitlab" GITLAB_port="80" GITLAB_url="http://192.168.1.129"
info5
read -p "请输入${name}数据持久化存储目录(${GITLAB_HOME}):" gitlab_home
read -p "请输入${name}容器启动的容器名称(${name}):" gitlab_name
read -p "请输入${name}容器启动的容器端口(${GITLAB_port}):" gitlab_port
read -p "请输入${name}容器启动的镜像版本(gitlab/gitlab-ce:11.10.4-ce.0):" gitlab_version
read -p "请输入${name}容器启动时${name}访问的URL(${GITLAB_url}):" GITLAB_url
gitlab_version=${gitlab_version:-gitlab/gitlab-ce:11.10.4-ce.0}
gitlab_name=${gitlab_name:-gitlab}
gitlab_port=${gitlab_port:-80}
gitlab_home=${gitlab_home:-/opt/gitlab}
GITLAB_url=${GITLAB_url}
if [ -z ${gitlab_version} ] && [ -z ${gitlab_name} ] && [ -z ${gitlab_port} ]&& [ -z ${gitlab_home} ];then
info8 "请根据提示,输入所有的值"
exit 0
else
info8 "第一次使用,选择启动方式必须是: run"
read -p "选择${gitlab_name}的启动方式:(run|restart|start|stop|rm|status):" gitlab_start_run1
if [ -z ${gitlab_start_run1} ];then
info6 "请重新输入"
info5
CICD_assembl_run
else
case $gitlab_start_run1 in
'run')
if [ `docker images | grep gitlab|wc -l` -eq 0 ];then
info7 "start pull ${gitlab_version}, wait !!!!"
docker pull ${gitlab_version} >/dev/null
fi
gitlab_run;;
'status')
info3
docker ps |grep ${gitlab_name};;
#[ $? -eq 0 ] && info " ${gitlab_name} Restart successful";;
'restart')
docker restart ${gitlab_name} &>/dev/null
[ $? -eq 0 ] && info " ${gitlab_name} Restart successful";;
'start')
docker start ${gitlab_name} &>/dev/null
[ $? -eq 0 ] && info " ${gitlab_name} Start successful";;
'stop')
docker stop ${gitlab_name} &>/dev/null
[ $? -eq 0 ] && info " ${gitlab_name} Stop successful";;
'rm')
docker rm -f ${gitlab_name} &>/dev/null
[ $? -eq 0 ] && info " ${gitlab_name} delete successful";;
'*')
info "脚本执行错误,请检查后继续";;
esac
fi
fi
}
start_gitlab