当前位置: 首页 > news >正文

Gitlab: 私有化部署

目录

1. 说明

2. 资源要求

3. 安装 

4. 配置实践

4.1 服务器

4.2 人员与项目

4.2 部署准备

4.2.1 访问变量及用户账号设置

4.2.2 Runner设置

4.2.3 要点

5. 应用项目 CI/CD

6. 参考


1. 说明

    gitlab是一个强大且免费的代码管理/部署工具,能统一集成代码仓库,CI/CD的工作。开始时我以为只能在官网上使用,后来才知道能私有化部署,确实了不起。

原理图:

2. 服务器

    gitlab资源要求比较高,建议8核16G,目前我的虚拟机是分配了5核12G,要是工作负荷上来,还要划拨资源。

ServerIP配置备注
host001.dev.ia192.168.0.1305核/12G/200G硬盘Gitlab服务器 / Gitlab Runner工作站 / 开发服务器1
host002.dev.ia192.168.0.1312核/4G/200G硬盘开发服务器2

在各自的 /etc/hosts 做上述设定

3. 安装 

docker-composer方式,指定外部访问url为 http://host001.dev.ia:18181

gitlab.yml

version: "3.5"services:web:image: 'gitlab/gitlab-ce:latest'container_name: gitlabrestart: alwayshostname: 'gitlab.dev.ia'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://host001.dev.ia:18181'# Add any other gitlab.rb configuration here, each on its own lineports:- '18181:18181'- '2222:22'volumes:- '/data0/Server/Settings/gitlab:/etc/gitlab'- '/data0/Server/Logs/gitlab:/var/log/gitlab'- '/data0/Server/Db/gitlab:/var/opt/gitlab'shm_size: '256m'

安装后进去容器设置管理员(root)密码

gitlab-rails console -e productionirb> user = User.where(id: 1).first
irb> user.password = 'xxx'
irb> user.password_confirmation = 'xxx'
irb> user.save!

4. 配置实践

4.1 人员与项目

进入管理后台,建立两个开发组,3名用户成员 (Regular Member权限,配置ssh公钥),两个团队项目, 每个项目分别建    dev / staging / live 分支,检查 pull & push是否正常

GroupMemberProjectBranch
Dev1ben, developer1Team1 Prj1dev / staging / live
Dev2ben, developer2Team2 Prj1dev / staging / live

如图:

4.2 部署准备
4.2.1 访问变量及用户账号设置

- 在gitlab服务器,因为docker化安装的,需映射ssh访问端口 22 => 2222

- 用工具生成deployer密钥,然后用管理员账号登录gitlab后台: 

-- 配置deployer私钥变量

    Admin Area => Settings => CI/CD => Variables, 定义 SSH_PRIVATE_KEY,用deployer的私钥填充,将在.gitlab-ci.ym里使用。(注:去掉默认的Protect variable勾选,不然部署时会出现“Error loading key "(stdin)": error in libcrypto”问题)

-- 配置仓库访问公钥, 可选择添加:公共的部署公钥或项目部署公钥(2选1)

A 公共公钥:Admin Area => Deploy Keys,然后在项目Deploy keys中enable之

B 项目公钥:切换到项目 Settings => Repository => Deploy keys,添加deployer的Privately keys并且enable,使得deployer用户可访问代码仓库

- 在部署服务器建deployer账号,分配密钥,目录访问权限,脚本:

adduser deployer
setfacl -R -m u:deployer:rwx /www/wwwroot# 为解决安全及读写权限问题,把deployer添加到www组,把www加到deployer组
usermod -aGwww deployer
usermod -aGdeployer www# 建立密钥文件, 通过vi把该用户的密钥加上
mkdir -p /home/deployer/.ssh && touch /home/deployer/.ssh/authorized_keys && touch /home/deployer/.ssh/id_rsa && touch /home/deployer/.ssh/configchmod 700 /home/deployer/.ssh && chmod 600 /home/deployer/.ssh/id_rsa && chown deployer:deployer -Rf /home/deployer/.ssh

- 为了ssh能正确访问git仓库(端口映射),需编辑 /home/deployer/.ssh/config

Host host001.dev.iaUser gitHostname host001.dev.iaPort 2222Preferredauthentications publickeyIdentityFile ~/.ssh/id_rsaTCPKeepAlive yesAddKeysToAgent yes

 完成后用deployer登录目标机器,测试是否能连接gitlab, 克隆仓库

ssh -T git@host001.dev.iagit clone git@host001.dev.ia:dev1/team1-prj2.git
4.2.2 Runner设置

Runner 所处位置图: 通过Runner工作组,根据脚本进行构建与分发

用root账号登陆,在管理面板(Admin Area)=> CI/CD => Runners页上建Runner,它实际上是个运行代理器,让工作机的关联进来,通过定义tag来调配对应的运行器完成任务,这里我定义了一个php的runner

gitlab在项目管理中提供了Pipeline editor工具,可以在不同分支定义一个.gitlab-ci.yml文件,记叙CI/CD步骤与详细内容,当用户提交并推送代码时触发过程

工作机安装gitlab-runner客户端, 脚本 gitlab-runner-install.sh

#!/bin/bash# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64# Give it permission to execute
sudo chmod +x /usr/local/bin/gitlab-runner# Create a GitLab Runner user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash# Install and run as a service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

注册runner

gitlab-runner register  --url http://host001.dev.ia:18181  --token glrt-HfgiG84kn28NvU69stkh- 选择shell类型gitlab-runner run# 其他相关命令
gitlab-runner list
gitlab-runner unregister --all-runners
gitlab-runner unregister  --url http://host001.dev.ia:18181  --token glrt-ABh3NZLwxomjSk6szHbz
4.2.3 要点

- 在gitlab文档中,是没有提及给gitlab-runner账号配deployer私钥的,当用giltlab-runner账号在终端进行手动测试时,需把deployer的id_rsa拷贝过去 gitlab-runner/.ssh目录下。

5. 应用项目 CI/CD

请关注后续序列文章

6. 参考

- Use SSH keys to communicate with GitLab | GitLab

- .gitlab-ci.yml 配置 · PHP/Python/前端/Linux 等等 学习笔记 · 看云

- gitlab runner tag - 简书

- https://dev.to/techworld_with_nana/gitlab-cicd-for-beginners-free-course-2mee

相关文章:

Gitlab: 私有化部署

目录 1. 说明 2. 资源要求 3. 安装 4. 配置实践 4.1 服务器 4.2 人员与项目 4.2 部署准备 4.2.1 访问变量及用户账号设置 4.2.2 Runner设置 4.2.3 要点 5. 应用项目 CI/CD 6. 参考 1. 说明 gitlab是一个强大且免费的代码管理/部署工具,能统一集成代码仓…...

深入理解Linux线程(LWP):概念、结构与实现机制(2)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:会いたい—Naomile 1:12━━━━━━️💟──────── 4:59 🔄 ◀️ ⏸ ▶️ ☰ &a…...

VBS脚本搞定,快速批量提取一堆Excel文件中的数据

1.需求诞生 小王就职于一家国有大型企业,工作业务十分繁忙,在处理企业某业务数据时,需要从上千个Excel文件中提取某一单元格位置的数据,并整理到另一个Excel文件。要说是这样的Excel文件仅有几个或者十几个也还好,手动…...

大数据分析案例-基于SVM支持向量机算法构建手机价格分类预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

WPF 滑动条样式

效果图&#xff1a; 浅色&#xff1a; 深色&#xff1a; 滑动条部分代码&#xff1a; <Style x:Key"RepeatButtonTransparent" TargetType"{x:Type RepeatButton}"><Setter Property"OverridesDefaultStyle" Value"true"/&g…...

论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现

文章目录 论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现 1、论文(设计)的主要任务及目标…...

Win11系统安装安卓子系统教程

随着Win11系统的不断普及&#xff0c;以及硬件设备的更新换代&#xff0c;我相信很多同学都已经更新并使用到了最新的Win11系统。那么&#xff0c;Win11系统最受期待的功能“Windows Subsystem for Android”&#xff08;简称WSA&#xff09;&#xff0c;即《安卓子系统》。他可…...

Python实现双向链表:从基础到应用

一、引言 双向链表是一种比单向链表更复杂的数据结构&#xff0c;每个节点除了包含数据和指向下一个节点的指针外&#xff0c;还包含一个指向前一个节点的指针。这种结构使得我们可以从链表的任何节点开始&#xff0c;向前或向后遍历链表。 目录 一、引言 二、节点定义 三、…...

c# 读取DataGridView中的数据

/// <summary> /// 读取DataGridView中的数据 /// </summary> /// <param name"dgv">DataGridView对象</param> /// <returns>DataTable对象</returns> private DataTable GetDgvToTab…...

Stable Diffusion中的Clip模型

基础介绍 Stable Diffusion 是一个文本到图像的生成模型&#xff0c;它能够根据用户输入的文本提示&#xff08;prompt&#xff09;生成相应的图像。在这个模型中&#xff0c;CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型扮演了一个关键的角色&a…...

Python批量提取文件夹中图片的名称及路径到指定的.txt文件中

目录 一、代码二、提取效果 一、代码 import os# 定义要保存的文件名 file_name "TestImage/Image_Visible_Gray.txt"# 读取文件夹路径 folder_path "TestImage/Image_Visible_Gray"# 遍历文件夹中的所有文件 with open(file_name, "w") as f…...

微软开源 SBOM 生成工具:sbom-tool下载及使用详解

github地址 GitHub - microsoft/sbom-tool: The SBOM tool is a highly scalable and enterprise ready tool to create SPDX 2.2 compatible SBOMs for any variety of artifacts.The SBOM tool is a highly scalable and enterprise ready tool to create SPDX 2.2 compatib…...

【办公类-18-03】(Python)中班米罗可儿证书批量生成打印(班级、姓名)

作品展示——米罗可儿证书打印幼儿姓名 背景需求 2024年3月1日&#xff0c;中4班孩子一起整理美术操作材料《米罗可儿》的操作本——将每一页纸撕下来&#xff0c;分类摆放、确保纸张上下位置正确。每位孩子们都非常厉害&#xff0c;不仅完成了自己的一本&#xff0c;还将没有…...

js【详解】数据类型原理(含变量赋值详解-浅拷贝)

JavaScript 中的数据按存储方式的不同&#xff0c;分为值类型和引用类型。 值类型&#xff08;共 6 种&#xff09;&#xff1a;赋值的时候传值 —— 数字、字符串、布尔值、null 、undefined&#xff0c;Symbol引用类型&#xff08;仅 1 种&#xff09;&#xff1a;赋值的时候…...

SAM 影像分割——地理空间数据的分段模型的数据调参和自动分割分析

本笔记本展示了如何使用 Segment Anything Model (SAM) 从图像中分割对象,只需几行代码即可完成。 请确保在本笔记本中使用 GPU 运行时。对于 Google Colab,请转到运行时 -> 更改运行时类型,然后选择 GPU 作为硬件加速器。 地理空间数据的分段模型 Segment Anything M…...

Java底层自学大纲_设计模式篇

设计模式专题_自学大纲所属类别学习主题建议课时&#xff08;h&#xff09; A 深入理解设计模式001 SOLID设计原则和策略模式2.5 A 深入理解设计模式002 责任链模式2.5 A 深入理解设计模式003 工厂模式和模版方法模式2.5 A 深入理解设计模式004 装饰者模式2.5 A 深入理解设…...

详解字符串函数<string.h>(上)

1. strlen函数的使用和模拟实现 size_t strlen(const char* str); 1.1 函数功能以及用法 字符串长度 strlen函数的功能是计算字符串的长度。在使用时&#xff0c;要求用户传入需要计算长度的字符串的起始位置&#xff0c;并返回字符串的长度。 #include <stdio.h> #…...

1、docker入门

文章目录 1、tocker简介2、tocker的安装&环境配置2、配置阿里云镜像3、基本命令1、镜像命令2、docker基本命令3、镜像基本命令4、Docker 容器常用命令 1、tocker简介 新一代的虚拟化技术 2、tocker的安装&环境配置 uname -r1、首先查看liunx的内核 yum update -y2、更…...

Qt应用软件【测试篇】cppchecker静态代码检查

文章目录 cppcheker简介下载地址与安装检查项目QT Creator使用CPP Cheker开启检查常见错误总结错误信息说明cppcheker简介 Cppcheck 是一个用于 C/C++ 代码的分析工具。它提供独特的代码分析以检测错误,并专注于检测未定义的行为和危险的编码结构。其目标是仅检测代码中的真实…...

[递推与递归]数的计算

题目描述 给出正整数 n&#xff0c;要求按如下方式构造数列&#xff1a; 只有一个数字 n 的数列是一个合法的数列。在一个合法的数列的末尾加入一个正整数&#xff0c;但是这个正整数不能超过该数列最后一项的一半&#xff0c;可以得到一个新的合法数列。 请你求出&#xff…...

N_m3u8DL-CLI-SimpleG:告别命令行,用最简单的方法下载M3U8视频

N_m3u8DL-CLI-SimpleG&#xff1a;告别命令行&#xff0c;用最简单的方法下载M3U8视频 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 还在为复杂的M3U8下载命令而烦恼吗&#xf…...

别让毕业论文拖垮毕业季!Paperxie 智能写作,一键解锁高效通关模式

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图https://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 一、毕业季的 “隐形压力”&#xff1a;本科生的论文困局 毕业季的喜悦里&#xff0c;总藏着一份毕业论文带来…...

硅谷狂人的逆袭密码:解码拉里·埃里森从弃婴到科技巨鳄的五大生存法则

1. 赌徒思维&#xff1a;用未来下注的商业哲学 拉里埃里森的办公室里挂着日本战国名将武田信玄的"风林火山"条幅&#xff0c;这完美诠释了他贯穿职业生涯的决策风格——像赌徒般敏锐&#xff0c;如武士般果决。1977年那个决定性的夏天&#xff0c;当IBM研究员埃德加科…...

高效获取城通网盘直连地址:告别限速的免费解析工具

高效获取城通网盘直连地址&#xff1a;告别限速的免费解析工具 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否厌倦了城通网盘那令人抓狂的下载速度&#xff1f;是否每次下载大文件都要面对漫长的…...

3分钟搞定!免费解锁AMD/Intel处理器性能的终极指南

3分钟搞定&#xff01;免费解锁AMD/Intel处理器性能的终极指南 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility 还在为电脑性能…...

Zotero插件市场:如何在Zotero 7+中一键发现和安装最佳插件?

Zotero插件市场&#xff1a;如何在Zotero 7中一键发现和安装最佳插件&#xff1f; 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zoter…...

如何解决SQL多表查询数据重复问题_使用DISTINCT与JOIN优化

...

Microsoft Edge 浏览器下载文件时,提示【xxx可能会损害你的设备。是否仍要保留?】解决方案

一、问题Microsoft Edge 浏览器下载文件时&#xff0c;提示【xxx可能会损害你的设备。是否仍要保留&#xff1f;】当前浏览器版本147.0.3912.60(正式版本)(64位&#xff09;二、解决方案1、打开【开始】菜单&#xff0c;点击【设置】&#xff0c;选择【隐私和安全性】&#xff…...

Unsloth量化指南:手把手教你压缩模型,速度提升2倍

Unsloth量化指南&#xff1a;手把手教你压缩模型&#xff0c;速度提升2倍 1. Unsloth量化技术概述 1.1 什么是模型量化 模型量化是一种通过降低模型参数的数值精度来减小模型体积和加速推理的技术。想象一下&#xff0c;当你需要搬运一堆书籍时&#xff0c;把精装本换成平装…...

【开源】Vue拖拽表单设计器实战:从零构建自定义表单系统

1. 为什么需要拖拽表单设计器 表单是Web开发中最常见的交互元素之一&#xff0c;从简单的登录注册到复杂的数据收集场景都离不开它。传统开发方式中&#xff0c;每次新增一个表单都需要前端手动编写大量模板代码&#xff0c;后端配置校验规则&#xff0c;这种重复劳动不仅效率低…...