Gitlab简单使用CI/CD

开篇语

大概是去年就想做这个事情了,奈何当时卡到一个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
b19fca972b11cb6cfdfc1cae38b5d00c.png
img

安装

yum install gitlab-runner -y
a36f33e85c2791250fc835f89726baa1.png
img

注册到gitlab

注册群组Runner

首先我们要获取注册时候需要的信息,获取地址在 http://172.18.231.92:9006/admin/runners

输入命令进行注册

gitlab-runner register
8ef9117f2232b94e84fb9c944c9e2505.png
img

选择执行者,这里我使用shell

执行者参考:https://docs.gitlab.com/runner/executors/index.html

到这里已经注册成功了,就可以在gitlab中看到注册的runner了

3166cbef884bb3d92c4e054177c25276.png
img

为仓库设置单独的Runner

使用该方案应该先看下一步去创建项目

在我们要部署的仓库里面找到Runner配置信息(设置=>CI/CD)

2ceaa88c08ae615f23644aeebbb4079e.png
img

然后重复上面注册的过程,详细步骤如图

65909ee9e56a9c8a4d547f7edc3572cd.png
img

然后就可以在仓库的配置下可以看到我们注册的东西

72f51482cac57858403e9ebca407de09.png
img

配置帐号

添加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
5c557ed1edb931950471bb3454c1b40a.png
img

创建项目

直接开始创建项目

f93e5c663bb819d37ec06fb43f2f938b.png
img

拉取项目并填充内容

a99632da082980ada95ae7608e4f0f70.png
img

拷贝一个简单项目(https://gitee.com/AZRNG/my-example)提交到gitlab上

256219af6f2966e83ef325418befa4fe.png
img

配置流水线

在项目的根目录下创建文件名为.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查看

dba6b20757bb5cb062be4386d48d303b.png
img

查看详细信息

554b635a77b8595931647a32773344b6.png
img

部署成功,进入该服务器查看容器信息

02b39b01e4d6a7a063231ecc909f3c83.png
img

通过外部访问服务:http://172.18.229.206:8060/swagger/index.html 成功显示swagger界面,部署成功。

参考文档

https://blog.csdn.net/qq_42799562/article/details/118179856

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AppleScript: Handler

AppleScript绝对是个奇葩的存在&#xff01;不管功能有多强大。 Handler有两种&#xff0c;一种是和OC类似的使用Label参数&#xff0c;一种是和javascript类似的使用括号把一堆参数都放在里面的。 label参数的Handler的写法非常奇怪&#xff0c;光看文档绝对让人迷糊。这里按照…

powershell 运行策略

Unrestricted 这是一种比较宽容的策略&#xff0c;允许运行未签名的脚本。对于从网络上下载的脚本&#xff0c;在运行前会进行安全性提示&#xff1a; Set-ExecutionPolicy UnRestricted

免费的数字图书馆_不仅是书籍:您当地图书馆可能提供的所有免费数字资料

免费的数字图书馆You might think of libraries as old fashioned, or irrelevant in the age of the internet. You’d be wrong. 您可能会认为图书馆是老式的&#xff0c;或者与互联网时代无关。 你会错的。 Modern libraries offer books, yes, but they also provide inter…

iNeuOS工业互联网操作系统,脚本化实现设备运行时长和效率计算与统计

目 录1. 概述... 22. 实时采集开停状态... 23. 增加虚拟设备... 24. 脚本统计和计算设备运行时长... 45. 设备运行时长报表... 71. 概述有一个煤矿项目&#xff0c;使用iNeuOS系统时有一个需要是&#xff1a;要统计设备的运行时长&#xff0c…

webpack二(以webpack4.x起步)

一.基本安装首先我们要创建一个目录&#xff0c;初始化npm&#xff0c;以及在本地安装webpack&#xff1a;复制代码mkdir webpackapp && cd webpackapp复制代码npm init -y复制代码npm install --save-dev webapck复制代码现在我们看一下我们创建的目录以及目录下的结构…

阿里云中间件是什么-阿里云中间件介绍

阿里云中间件是什么?这其实是一个比较虚的概念。广义的中间件范围很广。起沟通作用的都可以认为是中间件。甚至ODBC这样的东西你也可以认为是中间件。 使用了中间件之后&#xff0c;以前直接连接的前台应用程序和数据库之前就多了个中间件&#xff0c;现在前台程序把请求发给…

C# 图片、文件等加入Project Resources

一、目的 1.编译后&#xff0c;只想有一个exe文件&#xff0c;不想外部文件引用&#xff0c;直接运行exe文件即可。 2.不会出现文件丢失情况。 二、操作 1.右击project ->properties->Resource&#xff0c;左上角选择Image&#xff08;或其他类型&#xff09; 2. 点击…

jfinal使用shiro注解大体流程

2019独角兽企业重金招聘Python工程师标准>>> 上一篇答题梳理了jfinal整合shiro的流程&#xff0c;jfinal读取shiro注解&#xff0c;这一篇将作为补充。 1.JFinalShiroPlugin作者为shiro的RequiresRoles&#xff0c;RequiresPermissions&#xff0c; RequiresAuthent…

chrome 快捷键取消_如何使用键盘快捷键在Chrome和Firefox中固定和取消固定选项卡...

chrome 快捷键取消If you tend to open a lot of tabs in your browser, it can become difficult to find the tabs with your most used websites. Pinning tabs in your browser moves those tabs to the left and shrinks the tabs to only show the favicon, and you can …

.NET Conf China 2022参会指南速览(内含超多福利)赶紧预约!⏰⏰⏰

12月充满惊喜各种美好节日纷至沓来似在奖励一年辛苦劳作的你12月的第一波福利.NET Conf China 承包啦立即扫码预约加入.NET年度盛宴抢12月第一波惊喜&#xff01;.NET Conf China 2022 .NET Conf China 2022是面向开发人员的社区峰会&#xff0c;延续 .NET Conf 2022 的活动&a…

python导入模块--案例

1 导入模块 1.1 问题 本案例要求先编写一个star模块&#xff0c;主要要求如下&#xff1a; 建立工作目录 ~/bin/创建模块文件 ~/bin/star.py模块中创建pstar函数&#xff0c;实现打印50个星号的功能然后练习导入模块&#xff0c;调用模块中的函数&#xff1a; 在交互解释器中导…

css常用命名

常用的CSS命名 头&#xff1a;header 内容&#xff1a;content/container 尾&#xff1a;footer 导航&#xff1a;nav 侧栏&#xff1a;sidebar 栏目&#xff1a;column 页面外围控制整体佈局宽度&#xff1a;wrapper 左右中&#xff1a;left right center 登录条&#xff1a;l…

***关于WP的邮件无法发送问题的总结(原创)

1.用FTP打开 /wp-include/class-smtp.php &#xff0c;最好是下载下来&#xff0c;搜索一下&#xff0c;查找到如下的代码&#xff1a; $this->smtp_conn stream_socket_client($host . ":" . $port,$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,$socket_cont…

C# 简单方式运行powershell文件/使用cmd命令运行ps1

一、目的、构想 1.C# winfrom编译的tool 运行一个powershell文件。 2.只需要运行即可&#xff0c;不需要返回值。 3.网上部分资料需要额外添加dll。 3.已经有cmd执行命令的函数&#xff0c;能否直接在cmd运行&#xff1f; 4.在cmd黑色窗口输入powershell 能进入powershell…

​.Net 7 AOT 彻底解析下(完结篇)

楔子&#xff1a;本篇是承继前面三篇文章而来&#xff0c;分别为&#xff1a;.Net 7 的 AOT 和 CLR有什么区别&#xff1f;.Net 7 的 R2R,Crossgen2是什么?.Net 7 的AOT原理简析通过以上三篇的基础&#xff0c;本篇来彻底解析下AOT这门技术的底层原理。AOT此终&#xff0c;不再…

cmd暂停快捷键_是否有键盘快捷键可以暂停正在运行的CMD窗口的输出?

cmd暂停快捷键When running a batch script, you may need or want to pause the output in the CMD window so that you can look things over. Is there an easy way to pause, then restart the output? Today’s SuperUser Q&A post has the answer to help with a re…

bash快捷键

Ctrl h &#xff1a;回退一个字符Ctrl f &#xff1a;光标前进一个字符Ctrl b &#xff1a;光标后退一个字符Ctrl w &#xff1a;删除光标之前的一个字符串&#xff08;进入剪切板&#xff09;Ctrl u &#xff1a;删除光标前的所有字符 &#xff08;进入剪切板&#xff09…

J - 青蛙的约会(扩展欧几里得)

https://vjudge.net/contest/218366#problem/J 第一步追及公式要写对&#xff1a;ynk-(xmk)pL > (n-m)klpx-y 可以看出扩展欧几里得原型&#xff0c;这里注意扩展欧几里得求出的是任意解&#xff0c;非最优&#xff0c;要推出最小解k。 (n-m)xlygcd > (n-m)(x*(x-y)/gcd)…

C# 简单方式解压Zip文件/使用VS2019自带功能

一、目的、构想 1.直接解压zip文档。 2.网上资料不少需要外部dll。 3. 找到可以不需要外部dll方法&#xff0c;分享。 二、code实现 using System.IO.Compression;string filePath "c:\Server\fileList"; string zipPath "C:\Server\Download\Auto.zip&quo…

在 Docker 中使用 flannel - 每天5分钟玩转 Docker 容器技术(60)

上一节我们安装和配置了 flannel&#xff0c;本节在 Docker 中使用 flannel。配置 Docker 连接 flannel编辑 host1 的 Docker 配置文件 /etc/systemd/system/docker.service&#xff0c;设置 --bip 和 --mtu。这两个参数的值必须与 /run/flannel/subnet.env 中 FLANNEL_SUBNET …