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

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

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

相关文章

我的NPI项目之Android 安全系列 -- Keymaster到底是个什么

最近因为一直在调研独立secure element集成的工作,不巧的是目前使用的高通平台只有NFC-eSE的方案。高通目前也并不支持独立的eSE集成,codebase中并无相对应的代码。举个例子,目前使用的STM的一款eSE,但是这款eSE的开发STM还没有完…

【MySQL】数据库中常用的函数

目录 聚合函数COUNT()函数的多种用法COUNT(*)COUNT(主键)COUNT(1)COUNT(常量)COUNT(非主键)COUNT(distinct(字段)) COUNT()函数小结 字符函数length(str)函数:获取参数值的字节个数concat(str1,str2,...)函数:字符串拼接upper(str)、lower(str)函数:大小…

java 商机管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 商机管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

【数据结构】用队列实现栈

下面是一些思路分析和代码分享,有需要借鉴即可。 1.问题描述 我想用队列来实现栈的功能,具体而言是用两个队列做底层做出栈的功能来。 有人可能会疑问会不会多次一举,这里仅作练习,为了更加进一步了解栈/队列的性质 2.思路分析 …

Android logcat系统

一 .logcat命令介绍 android log系统: logcat介绍 : logcat是android中的一个命令行工具,可以用于得到程序的log信息. 二.C/Clogcat访问接口 Android系统中的C/C日志接口是通过宏来使用的。在system/core/include/android/log.h定义了日志的级别: /…

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…

数据库系统概论(超详解!!!) 第二节 数据模型

1.数据模型分为两类(两个不同的层次) (1) 概念模型 ,也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。 (2) 逻辑模型 ,逻辑模型主要包括…

异地组网搭建方案

在这个信息爆炸的时代,人与人之间的联系变得越来越密切,而异地组网搭建方案也因此变得越 来越重要。无论是跨国企业、远程学习还是国际合作,构建一个快捷稳定的异地组网系统,已经 成为许多组织和个人不可或缺的需求。接下来&#…

运维随录实战(2)之k8s部署应用

一, 创建.gitlab-ci.yml文件 架构流程 文件内容 stages: #设置流水线模版- build # 编译- source2img- deploy # 发布variables: # 设置全局变量MAVEN_PATH: .m2MAVEM_IMAGE: maven:3.8.5-openjdk-17-slim # maven 打包使用的镜像MAVEN_CLI_OPTS: "-s $MAVEN_PATH/set…

R语言安装和简单入门HelloWorld用法

R语言安装和简单入门HelloWorld用法 #R语言安装地址 https://www.r-project.org/ click->CRAN mirror->选择China下列表: https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 选择Download R for Windows 选择base Download R-4.3.2 for Windows 下载文件R-4.3.2-…

身份证识别系统(安卓)

设计内容与要求: 通过手机摄像头捕获身份证信息,将身份证上的姓名、性别、出生年月、身份证号码保存在数据库中。1)所开发Apps软件至少需由3-5个以上功能性界面组成。要求:界面美观整洁、方便应用;可以使用Android原生…

【Unity】使用Unity实现双屏显示

引言 在使用Unity的时候,有时候会需要使用双屏显示 简单来说就是需要在两个显示器中显示游戏画面 双屏显示注意点: ①双屏显示需要电脑有两个显示 ②双屏显示只能用于PC端 ③不仅仅可以双屏,Unity最大支持8屏显示 1.相机设置 ①我们打开Un…

VMwareWorkstation17.0虚拟机安装搭建PcDos2000虚拟机(完整图文详细步骤教程)

VMwareWorkstation17.0虚拟机安装搭建PcDos2000虚拟机(完整图文详细步骤教程) 一、PcDos20001.PcDos2000简介2.PcDos2000下载 二、创建PcDos2000虚拟机1.新建虚拟机2.类型配置3.类型配置4.选择版本5.命名、存位置6.磁盘容量7.调整虚拟配置7.1 调整虚拟配…

【python】堆排序

堆的概念 堆:一种特殊完全二叉树,也就是二叉树必须全部是满的,但是最后一排可以从右向左缺失。 大根堆:每个节点都比他的子节点大 小根堆:每个节点都比子节点小 堆在代码中的形式 堆在代码中实际上就是列表&#…

蓝桥杯倒计时 41天 - KMP 算法

KMP算法 KMP算法是一种字符串匹配算法,用于匹配模式串P在文本串S中出现的所有位置。 例如S“ababac,P“aba”,那么出现的所有位置是13。 在初学KMP时,我们只需要记住和学会使用模板即可,对其原理只需简单理解&#xff…

一文搞懂Stable Diffusion中的提示词

欢迎来到Stable Diffusion的世界,这里是AI和创意的交汇点。在这里,我们将一起探索如何通过精心设计的提示词,指引这一强大的AI工具创造出令人叹为观止的图像。无论你是技术爱好者,还是对AI艺术充满好奇的初学者,这里都…

excel数值无法左对齐

右键,单元格格式 修改为常规 解决

力扣--动态规划64.最小路径和

思路分析: 基本思路: 本算法采用动态规划的思想,通过构建一个额外的二维矢量 dp 来存储每个位置的最小路径和。最终目标是求得右下角位置的最小路径和,即整个网格的最小路径和。 初始化: 初始化矢量的行数和列数&…

【AI视野·今日Sound 声学论文速览 第五十一期】Mon, 4 Mar 2024

AI视野今日CS.Sound 声学论文速览 Mon, 4 Mar 2024 Totally 6 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers VoxGenesis: Unsupervised Discovery of Latent Speaker Manifold for Speech Synthesis Authors Weiwei Lin, Chenhang He, Man Wai Mak, …

Stable Diffusion——Animate Diff一键AI图像转视频

前言 AnimateDiff 是一个实用框架,可以对文本生成图像模型进行动画处理,无需进行特定模型调整,即可为大多数现有的个性化文本转图像模型提供动画化能力。而Animatediff 已更新至 2.0 版本和3.0两个版本,相较于 1.0 版本&#xff…