DevOps-GitHub/GitLab
DevOps-GitHub/GitLab

GitHub是一个开源代码托管平台。基于web的Git仓库,提供共有仓库和私有仓库(私有仓库收费)。
GitLab可以创建免费私有仓库。
GitHub
为了快速操作,这里对创建仓库以及注册不做说明。
首先再GitHub上创建一个远程仓库github_test

使用GitHub远程仓库
-
在github上获取克隆地址(注意,这个地址是你仓库的地址,不是我的地址)
https://github.com/rkun0068/github_test.git -
克隆项目到本地linux,默认克隆到当前目录(如果出现无法连接github的情况,可以在https://github.com/521xueweihan/GitHub520 查找方法,一般在
/etc/hosts文件下配置DNS,刷新即可)[root@workstation ~]# git clone https://github.com/rkun0068/github_test.git Cloning into 'github_test'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done.[root@workstation ~]# cd github_test/ [root@workstation github_test]# ls README.md [root@workstation github_test]# cat README.md # github_test GitHub测试 -
提交代码文件
[root@workstation github_test]# vi hello.py [root@workstation github_test]# cat hello.py print("hello,github") [root@workstation github_test]# git add hello.py [root@workstation github_test]# git commit -m "提交hello.py" [main 9408d5c] 提交hello.py1 file changed, 1 insertion(+)create mode 100644 hello.py -
使用
git push推送到github[root@workstation github_test]# git push -u origin main Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 308 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: To git@github.com:rkun0068/github_test.git253eb95..a5196f7 main -> main Branch main set up to track remote branch main from origin.
设置免密
- 本地尝试空密码密钥对
- 本地保留私钥,公钥给对方
- 实现本地到远程免密
[root@workstation ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -C "root@workstation" -N ""
Generating public/private rsa key pair.
Created directory '/root/.ssh'.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ic2UQovuX1DlWRLaY4yWM9+L1UKIeHa4mCHZXMBV65M root@workstation
The key's randomart image is:
+---[RSA 2048]----+
| .ooo.=.. |
| *.+ % * |
| + B / @ . |
| . . # X = . |
| . = S E + . |
| . . + o |
| . . . . |
| . . |
| . |
+----[SHA256]-----+ [root@workstation ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq/MCM/q8ipB4lsmOSzve25/pPr+FjdxnMM857/cwdqtttcJLID7vnzsgxo/W/bZXg+3h0r4P+VjLR3QLdR2XI/TSEvHdHQxB6Pi8lzbDYaUqTi14RrP5fJIC48pJwArBVMWNGQireXjynQ4Urgy7YJIwQNi1SgFxxrOpxk8PuKCo/ZmKKdS37mJA/rGmMV0xMvqKWgOAm0hrnXKpX1f7YRUeRJfGpN6o73stExbSEd4kas+LAnu++UQ/PNBo+s15Uw9Sm70Vr7mJ9pjLa0swtE6GrX2CbgnOcYg7LS7ngQbeS3KEB+dk7j/j5q0y8o+x6lbIhWWGlOFPGadxADPtF root@workstation
将密钥添加到GitHub设置里的SSH KEYS里
https://github.com/settings/keys
GitLab

下载地址
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
安装与配置
[root@workstation ~]# rpm -ivh gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
[root@workstation ~]# vi /etc/gitlab/gitlab.rb[root@workstation ~]# cat /etc/gitlab/gitlab.rb | grep 'external_url'
##! For more details on configuring external_url see:
external_url 'http://192.168.182.130'
# registry_external_url 'https://registry.gitlab.example.com'
# pages_external_url "http://pages.example.com/"
# mattermost_external_url 'http://mattermost.example.com'#修改成gitlab服务器IP地址,对外服务大约在13行
初始化(时间较久,需要3分钟左右,会自动帮助配置各个组件,并启动)
gitlab-ctl reconfigure
查看状态
[root@workstation ~]# gitlab-ctl status
run: gitaly: (pid 9745) 65s; run: log: (pid 9109) 171s
run: gitlab-monitor: (pid 9781) 63s; run: log: (pid 9445) 136s
run: gitlab-workhorse: (pid 9759) 64s; run: log: (pid 9215) 165s
run: logrotate: (pid 9320) 153s; run: log: (pid 9319) 153s
run: nginx: (pid 9274) 159s; run: log: (pid 9273) 159s
run: node-exporter: (pid 9395) 142s; run: log: (pid 9394) 142s
run: postgres-exporter: (pid 9837) 62s; run: log: (pid 9600) 113s
run: postgresql: (pid 8774) 231s; run: log: (pid 8773) 231s
run: prometheus: (pid 9824) 62s; run: log: (pid 9544) 124s
run: redis: (pid 8651) 237s; run: log: (pid 8650) 237s
run: redis-exporter: (pid 9494) 130s; run: log: (pid 9493) 130s
run: sidekiq: (pid 9048) 178s; run: log: (pid 9047) 178s
run: unicorn: (pid 8980) 184s; run: log: (pid 8979) 184s
登录
访问IP,设置密码

使用设置的密码登录

GitLab设置
- 账号注册时,邮箱验证
- 有合并请求,邮箱通知
- 修改密码时,通过邮件修改


开发者设置SSH密钥
-
在开发者电脑设置空密码密钥(你可以使用上文中的,也可以创建新密钥)
ssh-keygen -t rsa -f /root/.ssh/id_rsa -C "root@workstation" -N "" -
查看密钥
[root@workstation ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq/MCM/q8ipB4lsmOSzve25/pPr+FjdxnMM857/cwdqtttcJLID7vnzsgxo/W/bZXg+3h0r4P+VjLR3QLdR2XI/TSEvHdHQxB6Pi8lzbDYaUqTi14RrP5fJIC48pJwArBVMWNGQireXjynQ4Urgy7YJIwQNi1SgFxxrOpxk8PuKCo/ZmKKdS37mJA/rGmMV0xMvqKWgOAm0hrnXKpX1f7YRUeRJfGpN6o73stExbSEd4kas+LAnu++UQ/PNBo+s15Uw9Sm70Vr7mJ9pjLa0swtE6GrX2CbgnOcYg7LS7ngQbeS3KEB+dk7j/j5q0y8o+x6lbIhWWGlOFPGadxADPtF root@workstation -
将密钥粘贴

GitLab创建仓库
-
GitLab创建仓库(代码存放处)

-
自定义项目


克隆远程仓库到本地
-
查看gitlab上帮助

-
开发者电脑设置身份标识
[root@workstation ~]# git config --global user.name "rkun18" [root@workstation ~]# git config --global user.email "rkun18@outlook.com" [root@workstation ~]# git clone git@192.168.182.130:root/gitlab_test.git -
开发者电脑使用git命令clone,并上传项目
[root@workstation ~]# cd gitlab_test/ [root@workstation gitlab_test]# echo "gitlab_test" > README.md [root@workstation gitlab_test]# git add . [root@workstation gitlab_test]# git commit -m "add README.md" [master (root-commit) eaf506f] add README.md1 file changed, 1 insertion(+)create mode 100644 README.md [root@workstation gitlab_test]# git branch * master [root@workstation gitlab_test]# git push -u origin master Counting objects: 3, done. Writing objects: 100% (3/3), 224 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.182.130:root/gitlab_test.git* [new branch] master -> master Branch master set up to track remote branch master from origin. -
验证

持续集成(CI)
Continuous integration,CI
是一种软件开发实践,团队开发人员经常集成他们的工作,通常每个成员每天至少集成一次,意味每天可能会发生多次集成。每次集成通过自动化构建(编译,测试,发布)验证,从而尽快地发现集成错误。
持续部署(CD)
基于持续交付的基础上,把功能稳定,符合产品需求的版本有方法地部署至生产环境中。可以看作持续交付的最后一环。
持续发布
Continuous Release (CR)
发布是周期性或不定性地对项目在部署后,进行整体软件版本的更新,例如,更新新功能或展示页面框架。
持续测试
Continuous Testing (CT)
持续测试贯穿整个软件开发过程,验证程序员提交代码,检验合规性及降低Bug,减少最终错误,实现敏捷及精益开发。
代码更新方法
蓝绿部署
保证系统在不间断提供服务的情况下上线代码的部署方式。
蓝绿部署的模型中包含两个集群。
正常情况下(无上限操作),集群A和集群B代码版本相同,同时对外提供服务

在项目上线时,首先把一个集群(比如集群A)从负载列表中摘除,进行版本部署。集群B仍然继续提供服务。

当集群A升级完成,我们把负载均衡重新指向集群A,再把集群B从负载列表中摘除,进行新版本部署。集群A重新提供服务。

当集群B也升级完成,集群B也恢复负载列表中。这个时候两个集群版本都已经升级,并且对外的服务几乎没有间断过。

相关文章:
DevOps-GitHub/GitLab
DevOps-GitHub/GitLab GitHub是一个开源代码托管平台。基于web的Git仓库,提供共有仓库和私有仓库(私有仓库收费)。 GitLab可以创建免费私有仓库。 GitHub 为了快速操作,这里对创建仓库以及注册不做说明。 首先再GitHub上创建一…...
redis群集(主从复制)
---------------------- Redis 主从复制 ---------------------------------------- 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的…...
F5 LTM 知识点和实验 5-健康检测
第五章:健康检测 监控的分类: 地址监控(3层)服务监控(4层)内容监控(7层)应用监控(7层)性能监控(7层)路径监控(3、4、7层)三层监控: 三层监控可以帮助bipip系统通过检查网络是否可达监视资源。比如使用icmp echo,向监控节点发送icmp_echo报文,如果接收到响应…...
❤️创意网页:能量棒页面 - 可爱版(加载进度条)
✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…...
C语言中的操作符(万字详解)
C语言中的操作符(万字详解) 一、算术操作符()1.除号 /2.取余 %二、移位操作符1.原码2.反码3.补码4.左移操作符5.右移操作符三、位操作符1.按位与操作符:&2.按位或操作符:|3.按位异或操作符:…...
Panda 编译时原子化 CSS-in-JS 框架的跨平台方案
Panda 编译时原子化 CSS-in-JS 框架的跨平台方案 Panda 编译时原子化 CSS-in-JS 框架的跨平台方案 对编译时原子化CSS框架的思考编译时 CSS-in-JS 方案对比 LinariaPandacss总结 weapp-pandacss 介绍快速开始 pandacss 安装和配置 0. 安装和初始化 pandacss1. 配置 postcss2. …...
【图论】BFS中的最短路模型
算法提高课笔记 目录 迷宫问题题意思路代码 武士风度的牛题意思路代码 抓住那头牛题意思路代码 BFS可以解决边权为1的最短路问题,下面是三道相关例题 迷宫问题 原题链接 给定一个 nn 的二维数组,如下所示: int maze[5][5] {0, 1, 0, 0, …...
Linux Mint 21.2 ISO 镜像开放下载
导读Linux Mint 21.2 ISO 镜像于 2023 年 6 月 21 日公测,开发者在这段时间内收集并修复了用户反馈的诸多问题。 代号为“Victoria”的 Linux Mint 21.2 ISO 镜像于今天正式开放下载,新版本基于 Ubuntu 22.04 LTS,提供 Cinnamon 5.8、Xfce 4.…...
版本适配好帮手 Android SDK Upgrade Assistant / Android Studio Giraffe新功能
首先是新版本一顿下载↓: Download Android Studio & App Tools - Android Developers 在Tools中找到Android SDK Upgrade Assistant 可以在此直接查看SDK升级相关信息,不用跑到WEB端去查看了。 例如看一下之前经常要对老项目维护的android 12蓝牙…...
kafka权威指南学习以及kafka生产配置
0、kafka常用命令 Kafka是一个分布式流处理平台,它具有高度可扩展性和容错性。以下是Kafka最新版本中常用的一些命令: 创建一个主题(topic): bin/kafka-topics.sh --create --topic my-topic --partitions 3 --replic…...
自由行的一些小tips
很多很多年前,写过一些关于自由行的小攻略,关于互联网时代的自助旅游,说起来八年了,很多信息可能过期了。 前几天准备回坡,因为自己比较抠门,发现目前大陆回新加坡的机票比较贵(接近4000人民币&…...
uiautomatorViewer无法获取Android8.0手机屏幕截图的解决方案
问题描述: 做APP UI自动化的时候,会碰到用uiautomatorViewer在Android 8.0及以上版本的手机上,无法获取到手机屏幕截图,无法获取元素定位信息的问题,会有以下的报 在低版本的Android手机上,则没有这个问题…...
使用LangChain构建问答聊天机器人案例实战(三)
使用LangChain构建问答聊天机器人案例实战 LangChain开发全流程剖析 接下来,我们再回到“get_prompt()”方法。在这个方法中,有系统提示词(system prompts)和用户提示词(user prompts),这是从相应的文件中读取的,从“system.prompt”文件中读取系统提示词(system_tem…...
在windows上安装minio
1、下载windows版的minio: https://dl.min.io/server/minio/release/windows-amd64/minio.exe 2、在指定位置创建一个名为minio文件夹,然后再把下载好的文件丢进去: 3、右键打开命令行窗口,然后执行如下命令:(在minio.…...
22. 数据库的隔离级别和锁机制
文章目录 数据库的隔离级别和锁机制一、数据库隔离级别1. 隔离级别说明2. 如何选择隔离级别3. 查询当前客户端隔离级别的命令.4. 修改隔离的命令 二、数据库中的锁1. 共享锁、排他锁2. 死锁3. 行级锁、表级锁 三、解决更新丢失问题1. 解决方案2. 乐观锁、悲观锁3. 乐观锁、悲观…...
【题解】[ABC312E] Tangency of Cuboids(adhoc)
【题解】[ABC312E] Tangency of Cuboids 少见的 at 评分 \(2000\) 的 ABC E 题,非常巧妙的一道题。 特别鸣谢:dbxxx 给我讲解了他的完整思路。 题目链接 ABC312E - Tangency of Cuboids 题意概述 给定三维空间中的 \(n\) 个长方体,每个长方体…...
k8s服务发现之使用 HostAliases 向 Pod /etc/hosts 文件添加条目
某些情况下,DNS 或者其他的域名解析方法可能不太适用,您需要配置 /etc/hosts 文件,在Linux下是比较容易做到的,在 Kubernetes 中,可以通过 Pod 定义中的 hostAliases 字段向 Pod 的 /etc/hosts 添加条目。 适用其他方…...
python中有哪些比较运算符
目录 python中有哪些比较运算符 使用比较运算符需要注意什么 总结 python中有哪些比较运算符 在Python中,有以下比较运算符可以用于比较两个值之间的关系: 1. 等于 ():检查两个值是否相等。 x y 2. 不等于 (!):检查两个…...
Python网络编程详解:Socket套接字的使用与开发
Python网络编程详解:Socket套接字的使用与开发 1. 引言 网络编程是现代应用开发中不可或缺的一部分。通过网络编程,我们可以实现不同设备之间的通信和数据交换,为用户提供更加丰富的服务和体验。Python作为一种简洁而强大的编程语言&#x…...
Appium+python自动化(二十六)- Toast提示(超详解)简介
开始今天的主题 - 获取toast提示 在日常使用App过程中,经常会看到App界面有一些弹窗提示(如下图所示)这些提示元素出现后等待3秒左右就会自动消失,这个和我日常生活中看到的烟花和昙花是多么的相似,那么我们该如何获取…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
