文章目录

    • 概念
    • 一、环境准备
    • 二、gitlab配置
    • 三、.gitlab-ci.yml文件配置

概念

Devops是一个概念,就是边开发边测试,能够大大提升开发效率,本文使用pycharm+gitlab实现一个简单的DevOps流程

一、环境准备

需要一个测试环境,模拟部署,测试环境需要安装相关依赖包
测试环境是centos7
本项目是后端fastapi+前端vue2
1、项目采用supervisor进行管理,安装supervisor

yum install supervisor
# 使用supervisorctl进行进程管理
# 1、修改默认配置
vim /etc/supervisord.conf
# 在最后一行加上,表示此目录下进行配置相关进程的conf文件
[include]
files = /etc/supervisor/conf.d/*.conf
# 2、增加配置文件,管理相关进程
vim /etc/supervisor/conf.d/
[program:openAdmin]
command=/usr/bin/python3 /var/www/open_admin/backend/main.py run
priority=4
directory=/var/www/open_admin/backend
autostart=true
autorestart=true
stdout_logfile=/var/log/open_admin/app.log
stderr_logfile=/var/log/open_admin/error.log

supervisorctl启动管理进程相关命令

# 启动进程openAdmin,也就是配置文件里面写的[program:openAdmin]
supervisorctl start openAdmin
# 重启进程
supervisorctl restart openAdmin
# 停止进程
supervisorctl stop openAdmin
# 更新配置文件
supervisorctl update

2、安装py虚拟环境

cd /var/www/ && pip3.10 install virtualenv
# 创建虚拟环境
virtualenv venv
# 激活虚拟环境
source venv/bin/activate
# 安装包
pip3 install -r requirements.txt

3、安装前端npm环境

# 安装npm
yum install nodejs-16.20.2

二、gitlab配置

需要配置gitlab,将服务器上的ssh密钥拷贝到gitlab项目配置中
1、服务器生成密钥

ssh-keygen -t rsa -b 4096 -C "gitlab-deploy"
# 切换到/root/.ssh/
cd /root/.ssh/
# 拷贝id_rsa文件内容
cat id_rsa

2、gitlab配置
在settings>CI/DI>Variables下
在这里插入图片描述
将拷贝的id_rsa内容复制到这里
在这里插入图片描述
复制id_rsa.pub内容,粘贴到user settings下的ssh keys中,设置项目允许ssh拉取
在这里插入图片描述

3、安装gitlab-runner
安装gitlab-runner,让其运行.gitlab-ci.yml,gitlab-runner可以安装到服务器(测试机上),也可以安装到gitlab服务器上,这里建议安装到服务器(测试机),这样方便,直接选择本地shell运行即可

# 开始安装
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 修改执行权限
chmod +x /usr/local/bin/gitlab-runner
# 添加用户,shell脚本是用gitlab-runner执行的
useradd --comment 'Gitlab Runner' --create-home gitlab-runner --shell /bin/bash
# 启动安装
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 启动runner服务
gitlab-runner start

4、注册gitlab-runner
先进行注册

# 注册服务
gitlab-runner register

出现如下内容
在这里插入图片描述
需要填url和token,去gitlab项目下,找到CI/DI>Runners
在这里插入图片描述
找到Specific Runners在这里插入图片描述
2对应的就是url,粘贴到刚才弹出的地方,回车,会继续让你输入token,复制3,继续回车,继续填description、tags、optional,当出现Enter an executor的时候,选择shell,因为这样直接在本机运行,gitlab-runner是在服务器本机上注册的,所以可以选择shell本机运行
在这里插入图片描述
出现以上内容代表注册成功,gitlab界面也会有如下显示
在这里插入图片描述

三、.gitlab-ci.yml文件配置

配置文件如下

stages:- build- deploy
# 防止浅克隆导致问题
variables:GIT_DEPTH: 0# 打包前端
build_vue:stage: buildtags:- shell  # 指定使用 shell runnerbefore_script:# 确保 Node.js 已安装在 runner 机器上# 因为是centos7,安装某些包的时候缺少依赖环境,这里单独导出设置下,以便于打包- export LD_LIBRARY_PATH=/usr/local/gcc-10.1.0/lib64:$LD_LIBRARY_PATH- node --version- npm --versionscript:- cd frontend- npm install- npm run buildartifacts:paths:- frontend/distexpire_in: 1 hour# 部署到服务器
deploy_server:stage: deployonly:- maindependencies:- build_vuetags:- shell  # 指定使用 shell runnerscript:- echo "Deploying to production server..."# 直接使用本地文件复制,因为 runner 就在目标服务器上,切换sudo运行- sudo cp -r frontend/dist/* /var/www/project/frontend/- sudo cp -r backend/* /var/www/project/backend/# 直接执行 supervisorctl 命令- sudo supervisorctl restart openAdmin

以上文件需要放到项目根目录下,这个时候随便修改文件,进行提交,就会在gitlab界面上看到正在执行的任务,如下所示,能够看到已经执行成功了
在这里插入图片描述
注意:如果yml文件里有拷贝等操作,需要把gitlab-runner添加到和root一样的权限,在服务器(测试机器)上

sudo visudo
# 添加如下内容
gitlab-runner ALL=(ALL) NOPASSWD: ALL

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

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

相关文章

华为流程管理体系构建与落地 之—— 业务流程规划【附全文阅读】

这部分内容聚焦华为业务流程管理,详细阐述了流程规划、设计、运营、评估与优化的具体方法和内容,为企业构建和完善流程管理体系提供了全面的指导。流程规划分类方法:介绍 POS、OES、OMS 等分类法,如 POS 法按规划、运营、支持划分…

Android 项目:画图白板APP开发(零)——功能介绍(笔锋,分页,缩放,多指,硬件加速等)

一、前言 本系列将全面的介绍一些有关Android 画图方面的知识。笔触功能包括:颜色、粗细、透明度、笔锋、橡皮;绘图功能包括:分页、缩放、多指、撤销恢复、笔画加速。别看功能这么多,简单的部分会花较少篇幅介绍,着重会…

香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 推理视频

演示视频 香橙派RK3588部署千问大模型Qwen2-VL-2B推理视频一、场景假设 视频输入为一条网络流,利用大模型对视频中的图像帧进行推理。由于大模型推理耗时长,无法对每帧都进行推理,因此采用跳帧推理的方式:当推理完一帧后&#xf…

排序概念以及插入排序

一、排序基本概念1.就地排序:使用恒定的额外空间来产生输出就地排序只是在原数组空间进行排序处理,也就是输入的数组和得到的数组是同一个2.内部排序和外部排序:待排序数据可以一次性载入到内存中为内部排序,反之数据量过大就是外…

Webpack 核心配置与最佳实践指南

Webpack 是现代前端工程化的核心工具,理解其配置原理和优化技巧对开发效率至关重要。 一、Webpack 基础架构 1、核心概念关系图 2、核心概念详解 概念 作用 示例配置 Entry 应用入口起点 entry: ‘./src/index.js’ Output 编译结果输出位置 output.path: path.resolve(__d…

GISBox私有云+SaaS:安全协同的地理智能平台

一、概述 GISBox(GIS 工具箱)是一套能够对GIS 影像、地形、倾斜摄影进行场景编辑、切片转化、分发服务的 GIS 工具箱。同时,GISBox还支持私有云并一键开启SaaS服务。 二、什么是私有云? 私有云服务是一种为企业或组织量身定制的…

代理人工智能的隐藏威胁

代理型人工智能的自主性令人兴奋,但事实并非如此。主动性越高,不可预测性就越强,这为严重的、往往被忽视的安全风险打开了大门。从指令劫持到数字供应链的连锁故障,代理型人工智能不仅智能,而且在不受控制的情况下非常…

SonarQube 扫描多个微服务模块

SonarQube 扫描多个微服务模块 在使用 SonarQube/SonarCloud 扫描多个微服务模块时,核心目标是​​确保每个微服务模块被独立分析​​,并在 SonarQube 界面中以独立项目展示结果。以下是具体实现方案,分场景说明: ​​一、前提条…

当前主流且经过市场验证的开源 BI 系统推荐

以下是当前主流且经过市场验证的开源 BI 系统推荐,结合技术特性、适用场景和行业实践,为不同需求提供针对性解决方案:一、综合型开源 BI 平台1. Apache Superset(Apache 2.0 协议)核心优势:全场景覆盖&…

第05章 排序与分页

1.排序数据 1.1 排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢? 背景2:表里有 4 条数据,我们只想要显示第 2、3 条数据怎么办呢? 2.2 实现规则 分页原理:所谓分页显示,就是将数据…

第4章 程序段的反复执行4.2while语句P128练习题(题及答案)

&#xff08;&#xff08;1&#xff09;阅读程序#include <bits/stdc.h> using namespace std; //汤永红 int main(){int n,s0;cin >> n;while(n){s s * 10 n % 10;n / 10;}cout << s << endl;return 0; }分别输入&#xff1a;0 1024 1234567890输出…

Linux下管道的实现

1.温故知新在上一篇博客我们知道了动态库是怎么样进行链接的&#xff0c;我们知道我们的.o文件&#xff0c;可执行文件都是我们的ELF格式的文件&#xff0c;是ELF文件&#xff0c;里面就有ELF header&#xff0c;程序头表&#xff0c;节&#xff0c;还有节头表&#xff0c;我们…

光猫、路由器和交换机

光猫&#xff1a;全称为光调制解调器&#xff0c;负责光信号与电信号的转换。在光纤入户的网络环境中&#xff0c;运营商通过光纤传输光信号&#xff0c;光猫将其转换为电脑、路由器等设备能识别的电信号&#xff0c;反之亦然。它是用户端与运营商网络之间的桥梁&#xff0c;保…

从零开始理解编译原理:设计一个简单的编程语言

编译原理是计算机科学的核心领域之一&#xff0c;它研究如何将高级编程语言转换为目标机器能够执行的代码。对于许多开发者来说&#xff0c;编译原理可能是一个神秘而复杂的领域&#xff0c;但实际上&#xff0c;通过系统的学习和实践&#xff0c;我们可以逐步掌握其核心概念和…

年轻新标杆!东方心绣脸韧带年轻技术升级发布

年轻新标杆&#xff01;东方心绣脸韧带年轻技术升级发布近日&#xff0c;“东方心绣脸韧带年轻品项升级发布会”圆满落幕。本次发布会聚焦现代女性面临的衰老困扰&#xff0c;正式推出技术升级成果——“韧带年轻”品项&#xff0c;旨在通过更科学的方案&#xff0c;助力求美者…

qt文件操作与qss基础

文章目录qt文件操作文件概述文件读写文件属性界面优化qss基础选择器的用法结语很高兴和大家见面&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01;&#xff01; 作者&#xff1a;٩( ‘ω’ )و260 我的专栏&#xff1a;qt&#xff0c;Li…

spring.config.import 不存在

确认spring.config.import的语法是否正确根据Spring Cloud的官方文档&#xff0c;该属性的值应该指向配置信息&#xff0c;例如对于Nacos配置中心&#xff0c;其格式通常为&#xff1a;spring:config:import: nacos://<nacos-server-addr>/<data-id>?group<gro…

kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器

场景&#xff1a;周二下班刚下地铁的时候有一位大佬&#xff0c;咨询kettle是否可以适配MinIO&#xff0c;功能要实现将图片或者base64通过kettle直接上传到MinIO服务器。接到需求&#xff0c;沟通需求&#xff0c;开干。经过3天左右研发和调试MinIO插件已经成功交付&#xff0…

套接字编程UDP

1.创建套接字int socket(int domain, int type, int protocol);第一个参数&#xff0c;底层用的ip报文统一使用的网络协议都是AFIN第二个参数&#xff0c;面向流的传输协议SOCK_DGRAM&#xff08;数据报套接字类型&#xff09;&#xff1a;支持数据报&#xff08;无连接、不可靠…

计算机网络:如何判断B或者C类IP地址是否划分了子网

要判断B类或C类IP地址是否划分了子网,核心在于通过子网掩码分析其网络位长度是否超过该类地址的默认网络位长度。以下是具体的判断方法和细节说明: 一、基础概念:IP地址类别与默认网络位 IP地址分为A、B、C三类(常用),每类地址的默认网络位长度(即未划分子网时,用于标…