Gitlab简单使用CI/CD
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gitlab简单使用CI/CD相关的知识,希望对你有一定的参考价值。
开篇语
大概是去年就想做这个事情了,奈何当时卡到一个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
安装
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.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查看
查看详细信息
部署成功,进入该服务器查看容器信息
通过外部访问服务:http://172.18.229.206:8060/swagger/index.html 成功显示swagger界面,部署成功。
参考文档
https://blog.csdn.net/qq_42799562/article/details/118179856
以上是关于Gitlab简单使用CI/CD的主要内容,如果未能解决你的问题,请参考以下文章