Gitlab 安装部署

目录

1、Jenkins 结合 Gitlab 构建 CI/CD 环境

CI/CD 介绍

CI/CD 流程

Jenkins 简介

GitLab 简介

项目部署方式

CI系统的工作流程

2、搭建 GitLab

安装 GitLab

配置 GitLab

修改root密码

访问 GitLab

开机自启

3、使用 GitLab

管理 GitLab

关闭 GitLab 注册功能

设置 邮箱报警

创建一个群组

创建一个账号

在组里添加用户

4、新建仓库

创建一个项目

仓库使用说明

新建一个文件

生成公钥导入GitLab(测试失败)


1、Jenkins 结合 Gitlab 构建 CI/CD 环境

常用的构建工具如 Jenkins、Travis、Codeship、Bamboo、gitlab、GitHub、Bitbucket。

CI/CD 介绍

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。

CI/CD 的核心概念是持续集成、持续交付和持续部署。

CI/CD 主要针对在集成新代码时所引发的问题,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。

持续集成 CI

CI (CI-Continuous integration)是指持续集成,开发者在代码的开发过程中,可以频繁的(一天多次)将代码合并到主干源码仓库,并进行自动化测试。

持续交付 CD

CD (Continuous Delivery)持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到测试环境或生产环境中。目的就是确保尽可能减少部署新代码时所需的工作量。

持续部署 CD

CD-continuous deployment,持续部署(另一种“CD”)是指自动将开发人员更改的代码从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。

CI/CD 流程

提交代码到仓库:开发者提交代码到仓库(commit)

代码测试

对代码仓库 commit 操作配置了钩子(hook),只要提交代码或者合并进主干,开始拉取代码进行代码测试。

1、代码质量测试(SonarQube)
2、代码单元测试:针对函数或模块的测试
3、集成测试:针对整体产品的某个功能的测试,又称功能测试
4、端对端测试:从用户界面直达数据库的全链路测试

构建(编译)

通过第一轮测试,代码可以交付了。交付后,就先进行构建(build)。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS 脚本、图片)等等。

部署代码到测试环境:构建完成把产品部署到测试环境进行

测试(第二轮)

构建完成,就要进行第二轮测试。第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。 需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高, 进入后面的部署阶段后,很可能会出现严重的问题。

部署代码到生产环境

通过了第二轮测试,当前代码就是一个可以直接部署的版本了。将这个版本的所有文件发布到生产服务器。 部署工具有 shell 脚本,Ansible,Chef,Puppet 等。

回滚

一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。

Jenkins 简介

网方网站:https://jenkins.io/zh/

Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成、交付、部署的基于 web 界面的平台,用于自动化各种任务,包括构建、测试和部署软件。

GitLab 简介

gitlab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。

GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管 理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

项目部署方式

手动部署

自动部署

搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担,自己把代码提交上去之后,服务器上运行的马上就是最新版本。

CI系统的工作流程

系统的工作流程大概分为以下几步:

开发者将新版本 push 到 git server (Gitlab)。

Gitlab 随后触发 jenkins master 结点进行一次 build。(通过 web hook 或者定时检测)

jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个 slave 结点根据一个事先设置好的脚本进行 build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给 jenkins 来做。

我们在 build 中要进行编译,这里使用了分布式编译器 distcc 来加快编译速度。

注: jenkins 的工作原理是先将源代码从 gitlab 中拷贝一份到本地,然后根据设置的脚本进行 build。我们可以看出,整个系统的关键就是那个 build 脚本,用来告诉 jenkins 在一次集成中需要执行的任务。

2、搭建 GitLab

主机

IP

角色

安装软件

node-15

192.168.137.115

GitLab

GitLab

node-16

192.168.137.116

Jenkins

Jenkins、Apache

node-17

192.168.137.117

Apache

Apache

注意:gitlab 主机内存给大一点,最好是 4G,不然后面会报错关闭所有主机的防火墙和 selinux

安装 GitLab
# 安装依赖环境
yum install -y curl policycoreutils \
openssh-server openssh-clients postfix policycoreutils-python cronie

# 启动 Postfix
systemctl enable postfix 
systemctl start postfix

# 下载GitLab
wget \
http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.3.2-ce.0.el7.x86_64.rpm
# 安装GitLab
rpm -ivh gitlab-ce-15.3.2-ce.0.el7.x86_64.rpm

配置 GitLab
# 配置 gitlab 访问地址:修改 gitlab 外部访问地址
vim /etc/gitlab/gitlab.rb 

# 重置 GitLab
# 重新配置应用程序。修改了 gitlab 服务配置文件后,都需要执行一下这个命令。
# 让各个服务的配置文件,重新加载一下配置文件。这里等个 4 分钟左右。
gitlab-ctl reconfigure 

# 查看服务器状态
gitlab-ctl status

查看登陆密码

# 查看登陆密码
cat /etc/gitlab/initial_root_password
Password: e2pmqEAMFfiptvpfE6W8iZr98Kgn7nJ+UUUM6DauQ04=

修改root密码

默认密码有效期 24 小时, 修改 root 密码为 12345678

gitlab-rake "gitlab:password:reset"

访问 GitLab
# 查看端口: 默认使用 nginx 做为 web 界面。
netstat -antup | grep 80

注意:如果后期 web 界面访问时,总报 502,要把防火墙清空规则,另外内存要大于 4G,不然以后内存不足,也报 502

开机自启
systemctl enable gitlab-runsvdir 
systemctl status gitlab-runsvdir
3、使用 GitLab
管理 GitLab

主配置文件: /etc/gitlab/gitlab.rb #可以自定义一些邮件服务等

日志地址: /var/log/gitlab/ #对应各服务

服务地址: /var/opt/gitlab/ #对应各服务的主目录

仓库地址: /var/opt/gitlab/git-data #记录项目仓库等提交信息

gitlab-ctl stop

关闭 gitlab

gitlab-ctl start

启动 gitlab

gitlab-ctl restart

重启 gitlab

gitlab-ctl reconfigure

重置配置,#不要乱用

gitlab-ctl tail

查看所有日志

gitlab-ctl tail nginx/gitlab_access.log

查看 nginx 访问日志

关闭 GitLab 注册功能

设置 邮箱报警

linux 运维最注重的一点就是告警邮件,所以 Gitlab 一样提供了邮件发送的功能。 使用默认设置可能收不到邮件,这里使用第三方 SMTP 服务器。

官网各种邮箱配置实例: https://docs.gitlab.com/omnibus/settings/smtp.html

修改配置文件:

# 这里我配置的是新浪邮箱 SMTP: c8a8ec186ad388cb
vim /etc/gitlab/gitlab.rb #在第 108 行后添加以下内容
gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.sina.com" 
gitlab_rails['smtp_port'] = 465 
gitlab_rails['smtp_user_name'] = "codelemon@sina.com" 
gitlab_rails['smtp_password'] = "c8a8ec186ad388cb" # 授权码(8e0dc7bd66fba002)
gitlab_rails['smtp_authentication'] = "login" 
gitlab_rails['smtp_enable_starttls_auto'] = true 
gitlab_rails['smtp_tls'] = true 
gitlab_rails['gitlab_email_enabled'] = true 
gitlab_rails['gitlab_email_display_name'] = 'gitlab' 
gitlab_rails['gitlab_email_from'] = 'codelemon@sina.com' 
gitlab_rails['gitlab_email_reply_to'] = 'codelemon@sina.com'
# 重载 gitlab 
gitlab-ctl reconfigure


# 登陆控制台发送测试邮件 
gitlab-rails console #登陆控制台,注意写你自己的邮箱
irb(main):002:0> Notify.test_email('codelemon@sina.com','test','test').deliver_now

创建一个群组

创建一个账号

在组里添加用户

4、新建仓库
创建一个项目

可以在群组里创建项目,也可以创建私有的项目,然后使用,使用方法跟 github 一样。

仓库使用说明

跟使用 github 方法一样。需要注意没有在账号中新建 SSH 公钥之前将无法通过 SSH 拉取或推送代码。Gitlab 自己也支持 CI/CD,这里我们采用 jenkins 来做 CI/CD。

新建一个文件

生成公钥导入GitLab(测试失败)

在本地打开Git Bash

TortoiseGit 使用扩展名为 ppk 的密钥,而不是 ssh-keygen 生成的 rsa 密钥。使用命令 ssh-keygen -C "邮箱地址" -t rsa 产生的密钥在 TortoiseGit 中不能用。

而基于 git 的开发必须要用到 rsa 密钥,因此需要用到 TortoiseGit 的 putty key generator 工具来生成既适用于 git 的 rsa 密钥也适用于 TortoiseGit 的 ppk 密钥。

运行 TortoiseGit 开始菜单中的 puttygen 程序

点击“Generate”按钮,鼠标在上图的空白地方来回移动直到进度条完毕,就会自动生一个随机的 key

保存公钥

保存私钥:点击上图中的“Save private key”按钮,将生成的 key 保存为适用于 TortoiseGit 的私钥(扩展名为.ppk)

把私钥加入 TortoiseGit,在开始菜单打开Pageant

⑥ 把公钥导入Gitlab

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Conda笔记--移动Conda环境后pip使用异常的解决

1--概述 由于各种原因,需要将Anaconda转变为Minicoda,为了保留之前安装的所有环境,直接将anaconda3/envs的所有环境拷贝到Miniconda/envs中,但在使用移动后环境时会出现pip的错误:bad interpreter: No such file or di…

AWS的RDS数据库开启慢查询日志

#开启慢日志两个参数 slow_query_log 1 设置为1,来启用慢查询日志 long_query_time 5 (单位秒) sql执行多长时间被定义为慢日志1. 点击RDS然后点击参数组,选择slow_query_log,设置为1【表示开启慢日志】点击保存…

力扣hot9---滑动窗口

题目: 先记录一下(没想到有生之年,还能):其实还能优化,后面会讲述优化思路 思路: 滑动窗口的大小就是固定的,就是len_p。那么依次将窗口从s的最左端向右滑动。在当下的窗口中&#x…

python概率分析:为什么葫芦娃救爷爷是一个一个地救成功率最高?

关键词: Python 、葫芦娃 、 概率计算 、 数学 、 建模 前言 过完年了返工后想起了小孩子们爱看的葫芦娃救爷爷的动画片,葫芦娃为什么是一个一个前去救爷爷,为什么不等着七个一起去救爷爷。带着这个疑问,我决定今天用数学的角度…

微信小程序用户隐私保护指引设置

场景:开发小程序时,有时候需要获取用户隐私信息,在提交小程序审核时,需要填写一份隐私保护协议,经常由于填写不规范导致审核不通过,在网上找到了一份模块可供参考 步骤:小程序后台-》设置-》服…

MySQL 学习笔记(基础篇 Day1)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。 目录 0 课程介绍 1 MySQL 概述 1.1 数据库相关概念 1.2 MySQL 数据库 2 SQL 2.1 SQL 通用语法 2.2 SQL 分类 2.3 DDL 2.4 图形…

周最佳:詹姆斯场均30.3分8.7助 杰伦-布朗场均28.3分分别当选

直播吧指定地址:www.bdky.cn 3月5日讯 今日NBA官方公布了本赛季第19周周最佳球员,湖人球星勒布朗-詹姆斯和绿军球星杰伦-布朗分别当选。 上周詹姆斯场均可以得到30.3分4.7篮板8.7助攻,湖人取得2胜1负战绩。 布朗场均可以得到28.3分5.3篮板…

Linux中断实验:定时器实现按键消抖处理实验一

一. 简介 前面文章学习了Linux驱动按键中断实验,文章地址如下: Linux驱动按键中断实验:按键中断功能的实现-CSDN博客 本文在Linux驱动按键中断实现的基础上,使用定时器实现按键消抖处理。 二. Linux中断实验:定时器…

java:String和StringBuilder 的相互转换实现字符串拼接

public class StringDemo {/* 练习题:字符串拼接升级版1.定义一个int类型的数组,用静态初始化完成数组元素的初始化2.定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回3.在方法中用StringBuilder按照要求进行拼接&#x…

新生儿放屁的温馨小贴士:呵护宝宝舒适健康成长

引言 新生儿的生活充满了各种令人惊喜和可爱的瞬间,其中包括他们放臭屁的时刻。尽管这看似简单的行为可能引发父母的担忧,但实际上,它通常是宝宝健康发展的自然表现。在这篇文章中,我们将分享一些关于新生儿放臭屁的注意事项&…

面试经典150题 -- 回溯 (总结)

总的链接 : 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 17 . 电话号码的字母组合 1 . 先创建一个下标 与 对应字符串映射的数组,这里使用hash表进行映射也是可以的 ; 2 . 对于回溯 ,…

MySQL性能优化-Mysql索引篇(1)

什么是索引? 数据库中的索引,就好比一本书的目录,它可以帮我们快速进行特定值的定位与查找,从而加快数据查询的效率。索引就是帮助数据库管理系统高效获取数据的数据结构。如果我们不使用索引,就必须从第 1 条记录开始…

什么台灯护眼效果好?一文搞懂如何正确挑选护眼台灯

现在的孩子学习状态可以用四个字来形容,“学业繁重”,不少孩子从上小学开始,晚上完成功课到八九点都是在正常不过的事情了,因此室内的光线环境是非常重要的,直接影响了视力健康尤其是书桌上的那一盏台灯,有…

012 Linux_线程控制

前言 本文将会向你介绍线程控制(创建(请见上文),终止,等待,分离) 线程控制 线程终止 pthread_t pthread_self(void); 获取线程自身的ID 如果需要只终止某个线程而不终止整个进程,可以有三种…

SparkShop开源可商用,匹配小程序H5和PC端带分销功能!

SparkShop(星火商城)B2C商城是基于thinkphp6 elementui的开源免费可商用的高性能商城系统;包含小程序商城、H5商城、公众号商城、PC商城、App,支持页面diy、秒杀、优惠券、积分、分销、会员等级。营销功能采用插件化的方式方便扩展、二次开发 源码下载…

表单验证、属性绑定(一个属性根据另一个属性有无进行操作)

表单验证 一个属性根据另一个属性有无进行操作(属性绑定) 1、问题描述 ​ 需求:表单里面后两个属性需要根据前面一个属性进行有无判断。如果前面属性没有输入值,则不需要进行操作;如果前面属性有输入值,则…

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

🐇明明跟你说过:个人主页 🏅个人专栏:《Docker入门到精通》 《k8s入门到实战》🏅 🔖行路有良友,便是天堂🔖 目录 一、基本概念和介绍 1、Docker Swarm 是什么,它与 …

Rabbitmq消息丢失-消费者消息丢失(二)

说明:消费端在处理消息的过程中出现异常,例如:业务逻辑异常,或者消费者被停机,或者网络断开连接等,以上等情况使消息没有得到正确恰当的处理,也会使消息丢失。 分析:分析就是说明中…

【MATLAB第97期】基于MATLAB的贝叶斯Bayes算法优化BiGRU双向门控循环单元的多输入单输出回归预测模型,含GRU与BiGRU多层结构优化选择

【MATLAB第97期】基于MATLAB的贝叶斯Bayes算法优化BiGRU双向门控循环单元的多输入单输出回归预测模型,含GRU与BiGRU结构层数优化 前言 前面在【MATLAB第10期】讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的多输入单输出回归预测模型。 本次模型难点包括&am…

Ps:图案图章工具

图案图章工具 Pattern Stamp Tool可将各种预设图案或自定义的图案,通过画笔涂抹的方式填充到图像中。 快捷键:S 图案图章工具提供了一种快速、灵活的方式来为图像局部添加纹理和装饰。 这个工具类似于仿制图章工具,但区别在于,它使…