开篇语
大概是去年就想做这个事情了,奈何当时卡到一个docker命令找不到的问题上,导致文章难产了,墨迹了这么久,终于又有空来捣鼓它了。
目的
我们要实现的目的是我本地不断提交代码(CI),然后服务器不断进行部署(CD)的一个简单流程。
准备
在进行简单的gtlab的ci/cd之前,我们需要安装gitlab软件,这个可以看之前的文章。
本文环境:
服务器A:使用docker部署了gitlab
服务器B:已经安装了docker、注册了gitlab-runner用来部署服务
在centos一键安装docker以及docker-compose的脚本
#!/bin/bash
echo -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: #gitlab
image: gitlab/gitlab-ce
container_name: 'gitlab'
restart: always
environment:
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
![null b19fca972b11cb6cfdfc1cae38b5d00c.png](https://i-blog.csdnimg.cn/blog_migrate/ca042af9915e626771d7e806c5fba93a.png)
安装
yum install gitlab-runner -y
![null a36f33e85c2791250fc835f89726baa1.png](https://i-blog.csdnimg.cn/blog_migrate/05b4f2abd7432a8d283fbdc61567b86e.png)
注册到gitlab
注册群组Runner
首先我们要获取注册时候需要的信息,获取地址在 http://172.18.231.92:9006/admin/runners
输入命令进行注册
gitlab-runner register
![null 8ef9117f2232b94e84fb9c944c9e2505.png](https://i-blog.csdnimg.cn/blog_migrate/423cb45390de1439da34652f08b9ed88.png)
选择执行者,这里我使用shell
执行者参考:https://docs.gitlab.com/runner/executors/index.html
到这里已经注册成功了,就可以在gitlab中看到注册的runner了
![null 3166cbef884bb3d92c4e054177c25276.png](https://i-blog.csdnimg.cn/blog_migrate/8d0f8909f703144e557db7160dacc973.png)
为仓库设置单独的Runner
使用该方案应该先看下一步去创建项目
在我们要部署的仓库里面找到Runner配置信息(设置=>CI/CD)
![null 2ceaa88c08ae615f23644aeebbb4079e.png](https://i-blog.csdnimg.cn/blog_migrate/093ea9bc7534ec8fe418fdd3e6425fe7.png)
然后重复上面注册的过程,详细步骤如图
![null 65909ee9e56a9c8a4d547f7edc3572cd.png](https://i-blog.csdnimg.cn/blog_migrate/22b74994f8bcfb952da71999b625c219.png)
然后就可以在仓库的配置下可以看到我们注册的东西
![null 72f51482cac57858403e9ebca407de09.png](https://i-blog.csdnimg.cn/blog_migrate/3d75d959c4de621aa66364bd18955e17.png)
配置帐号
添加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
![null 5c557ed1edb931950471bb3454c1b40a.png](https://i-blog.csdnimg.cn/blog_migrate/89e1f1bede6157e7070e0480272918ca.png)
创建项目
直接开始创建项目
![null f93e5c663bb819d37ec06fb43f2f938b.png](https://i-blog.csdnimg.cn/blog_migrate/49c184c5c6a161687028dce997b87852.png)
拉取项目并填充内容
![null a99632da082980ada95ae7608e4f0f70.png](https://i-blog.csdnimg.cn/blog_migrate/dba0630a0e36dfd2106fcb6c4955468e.png)
拷贝一个简单项目(https://gitee.com/AZRNG/my-example)提交到gitlab上
![null 256219af6f2966e83ef325418befa4fe.png](https://i-blog.csdnimg.cn/blog_migrate/05ebc50c3cff766e13b475834c3de136.png)
配置流水线
在项目的根目录下创建文件名为.gitlab-ci.yml的文件,用于进行打包部署。
# .gitlab-ci.yml
stages:
- deploy
deploy:
stage: deploy
script:
- 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 -a
tags:
- net
提交推送代码,然后在gitlab的CI/CD=>Pipeliners查看
![null dba6b20757bb5cb062be4386d48d303b.png](https://i-blog.csdnimg.cn/blog_migrate/923471e53bba31378f98c3043e55bea2.png)
查看详细信息
![null 554b635a77b8595931647a32773344b6.png](https://i-blog.csdnimg.cn/blog_migrate/95d609e2c5d11bad12a9d73f257ea398.png)
部署成功,进入该服务器查看容器信息
![null 02b39b01e4d6a7a063231ecc909f3c83.png](https://i-blog.csdnimg.cn/blog_migrate/b707d6037026dc55750927c1f3fbb3b1.png)
通过外部访问服务:http://172.18.229.206:8060/swagger/index.html 成功显示swagger界面,部署成功。
参考文档
https://blog.csdn.net/qq_42799562/article/details/118179856