开篇语
大概是去年就想做这个事情了,奈何当时卡到一个docker命令找不到的问题上,导致文章难产了,墨迹了这么久,终于又有空来捣鼓它了。
目的
我们要实现的目的是我本地不断提交代码(CI),然后服务器不断进行部署(CD)的一个简单流程。
准备
在进行简单的gtlab的ci/cd之前,我们需要安装gitlab软件,这个可以看之前的文章。
本文环境:
服务器A:使用docker部署了gitlab
服务器B:已经安装了docker、注册了gitlab-runner用来部署服务
在centos一键安装docker以及docker-compose的脚本
#!/bin/bashecho -e "\033[33m install docker sh \033[0m"# 设置yum源
echo -e "\033[33m Set the yum source \033[0m"
sudo yum -y install yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#yum包更新到最新
echo -e "\033[33m update version \033[0m"
sudo yum update -y#安装Docker最新版
echo -e "\033[33m install docker-ce \033[0m"
sudo yum install docker-ce -y#设置Docker自启动
echo -e "\033[33m setting self-turn-on \033[0m"
sudo systemctl enable docker#启动Docker
echo -e "\033[33m start docker \033[0m"
sudo systemctl start docker#配置国内镜像 /etc/docker/daemon.json
echo -e "\033[33m Set up aliyuncs mirror \033[0m"
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
#加载配置文件,ReStart
sudo systemctl daemon-reload
sudo systemctl restart docker#安装docker-compose,最新版本需要手动查询一下
echo -e "\033[33m install docker-compose \033[0m"
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
部署gitlab的yaml脚本
version: '3'services:gitlab: #gitlabimage: gitlab/gitlab-cecontainer_name: 'gitlab'restart: alwaysenvironment:GITLAB_OMNIBUS_CONFIG: |external_url "http://172.18.231.92:9006" # web站点访问地址gitlab_rails['gitlab_shell_ssh_port'] = 9022 # 设置shell 端口gitlab_rails['time_zone'] = 'Asia/Shanghai' # 设置时区# gitlab_rails['smtp_enable'] = true# gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"# gitlab_rails['smtp_port'] = 465# gitlab_rails['smtp_user_name'] = "<your qq email>"# gitlab_rails['smtp_password'] = "xCcqh*L4jkqFCS"# gitlab_rails['smtp_authentication'] = "login"# gitlab_rails['smtp_enable_starttls_auto'] = true# gitlab_rails['smtp_tls'] = true# gitlab_rails['gitlab_email_from'] = '<your qq email>'# gitlab_rails['smtp_domain'] = "exmail.qq.com"ports:- '9006:9006'- '443:443'- '9022:22'volumes:- '/gitlab/config:/etc/gitlab'
安装gitlab-runner
在要部署服务的服务器上安装docker以及gitlab-runner,本次安装直接安装在服务器中,不使用docker安装gitlab-runner,避免产生Dind(docker in docker)问题。
首先导入repository
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
安装
yum install gitlab-runner -y
注册到gitlab
注册群组Runner
首先我们要获取注册时候需要的信息,获取地址在 http://172.18.231.92:9006/admin/runners
输入命令进行注册
gitlab-runner register
选择执行者,这里我使用shell
执行者参考:https://docs.gitlab.com/runner/executors/index.html
到这里已经注册成功了,就可以在gitlab中看到注册的runner了
为仓库设置单独的Runner
使用该方案应该先看下一步去创建项目
在我们要部署的仓库里面找到Runner配置信息(设置=>CI/CD)
然后重复上面注册的过程,详细步骤如图
然后就可以在仓库的配置下可以看到我们注册的东西
配置帐号
添加gitlab-runner用户
sudo adduser gitlab-runner
将该用户添加到docker组中
sudo gpasswd -a gitlab-runner docker
查看docker组是否已经添加用户成功
cat /etc/group |grep docker
验证是否可以通过gitlab-runner访问docker
sudo -u gitlab-runner -H docker info
重启docker容器服务
sudo systemctl restart docker
给docker.sock设置权限
sudo chmod a+rw /var/run/docker.sock
创建项目
直接开始创建项目
拉取项目并填充内容
拷贝一个简单项目(https://gitee.com/AZRNG/my-example)提交到gitlab上
配置流水线
在项目的根目录下创建文件名为.gitlab-ci.yml的文件,用于进行打包部署。
# .gitlab-ci.ymlstages:- deploydeploy:stage: deployscript:- docker -v- cd NetByDocker- docker build -f Dockerfile -t gitlabnetsample ../ - docker rm -f gitlabnetsample && docker run --name gitlabnetsample -d -p 8060:80 gitlabnetsample # remove old,create new - docker ps -atags: - net
提交推送代码,然后在gitlab的CI/CD=>Pipeliners查看
查看详细信息
部署成功,进入该服务器查看容器信息
通过外部访问服务:http://172.18.229.206:8060/swagger/index.html 成功显示swagger界面,部署成功。
参考文档
https://blog.csdn.net/qq_42799562/article/details/118179856