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,一经查实,立即删除!

相关文章

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

免费的数字图书馆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…

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…

​.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…

在 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 …

使用.NET7和C#11打造最快的序列化程序-以MemoryPack为例

译者注本文是一篇不可多得的好文&#xff0c;MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的&#xff1b;其中从很多方面(可变长度、字符串、集合等)解释了一些性能优化的技巧&#xff0c;值得每一个开发人员学习&#xff0c;特别是框架的开…

永不丢失照片:防弹照片备份的完整指南

There’s nothing as precious and irreplaceable as your personal photos and, with a little forethought and planning, there’s no reason to ever feel the heartbreak of losing even a single one of them to theft, broken devices, or disaster. 没有比您的个人照片…

MySQL InnoDB存储引擎

呵呵哒。。。 MySQL体系结构和存储引擎 首先要搞懂的是什么是数据库&#xff0c;什么是数据库实例。 数据库&#xff1a;物理操作系统文件或其他形式文件类型的集合。 实例&#xff1a;MySQL数据库由后台线程以及一个共享内存区组成&#xff0c;实例才是真正对数据库进行操作的…

Blazor学习之旅 (8) MudBlazor组件库介绍

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。为了实现一个Web应用系统&#xff0c;需要有个看起来不丑的UI&#xff0c;而对于.NET程序员来说要做全栈开发还是有点难&#xff0c;而本篇介绍的这个UI组件库正好可以帮助我们解决这个问题&#xff01;MudBlaozr是…

棉花糖多少钱_如何在6.0棉花糖及更高版本中访问Android的正在运行的应用程序列表...

棉花糖多少钱In Android 5.x and below, accessing your list of running apps was simple—you’d jump into Settings > Apps > Running. Easy! In Android 6.0, however, Google moved this setting. It’s still not super difficult to find, but it’s a little tr…

C# 程序图标设置/winform 图标

一、目的、实际情况 1.编写一个winform 程序&#xff0c;发现有一个图标非常有意义。区分其他程序&#xff0c;以及感觉在做产品而不是写代码。 2.添加图标图片发现&#xff0c;需要用ico格式。在线转换&#xff08;某度搜索&#xff09;还是不靠谱。要微信登陆&#xff0c;登…

数字化转型,究竟在“转”什么?

这是头哥侃码的第265篇原创「头哥唠B唠」这个栏目已经持续了几个月了&#xff0c;没想到还在继续进行&#xff0c;并收获了很多朋友们的喜爱。非常感谢大家的支持&#xff01;在上次的直播中&#xff0c;我找来了我的老熟人们。一个是右军老师&#xff0c;之前 APISIX 的很多内…

Crash 的文明世界

题目描述 给一棵树&#xff0c;求以每个点为根时下列式子的值。 题解 当k1时这就是一个经典的换根dp问题。 所以这道题还是要用换根dp解决。 部分分做法&#xff1a; 考虑转移时是这样的一个形式(图是抄的)。 用二项式定理展开就可以nk2做了。 观察到结果是一个xk的形式。 然后…

wampServer配置WWW根目录遇到的坑

直接在官网下载之后开始安装&#xff0c;一切正常 打开使用&#xff0c;一切正常 设置WWW目录。坑了一波 按照的都是百度上的教程&#xff0c;设置httpd.conf 这里配置之后网页访问127.0.0.1 还是localhost都还是原始的www目录 后来 我发现了这里 是配置虚拟URL的地方。以上是正…

windows安装程序创建_如何在Windows上创建已安装程序的列表

windows安装程序创建Reinstalling Windows is a good way to fix serious problems with your computer, or just to get a fresh slate. But before you reinstall Windows, you should make a list of programs you currently have installed on your PC so you know what yo…

实现一个更新所有 dotnet tool 的 dotnet tool

实现一个更新所有 dotnet tool 的 dotnet toolIntrodotnet tool 是从 .NET Core 2.1 开始支持的命令行工具&#xff0c;在使用 dotnet tool 比较多了的时候&#xff0c;想要更新所有的 dotnet tool 就比较麻烦&#xff0c;而目前 .NET SDK 还不支持&#xff0c;也有一些人希望能…