【持续集成_03课_Linux部署Sonar+Gogs+Jenkins】
一、通过虚拟机搭建Linux环境-CnetOS
1、安装virtualbox,和Vmware是一样的,只是box更轻量级
1)需要注意内存选择,4G+
2、启动完成后,需要获取服务器IP地址
命令
ip add
服务器IP地址
通过本地的工具,进行连接到服务器
1)自带的
输入ssh命令,能打印说明在正常的
如果没有的话,需要下载ssh工具包
在登录之后,就进入到用户的系统了,不再是在C盘里了
2)外部的,例如Xshell
端口号默认22,ip是服务器ip
需要看项目运行在什么环境下,需要提供相关的技术文档或着部署文档。安装JDK、Jenkins这种操作都会。
二、在LInux下安装java环境--JDK--11版本
1、下载JDK-11
linux要安装tar.gz这种压缩包
2、JDK文件上传到Linux系统的文件里
1)通过工具直接拖动
2)通过命令的方式
先创建文件夹 /user/java,用于存放jdk,再进入这个目录
通过命令,上传jdk文件
上传进度100%后,查看这个目录下的明细,有这个压缩包了
下一步是操作解压
执行上面这个命令
再查看这个目录,就能看到了
3、配置环境变量
按下面的命令
1)先打开jdk所在的文件路径
cd /user/java
2) 然后编辑profile
vi /etc/profile
3)把java_home的环境变量信息粘贴到最末尾
然后按住Esc 就可以退出编辑模式,然后:wq就可以写的保存了 。回车后,再cat查看一下是否保存成功
能看到填写的数据
4) 然后让环境变量生效
输入这个命令
然后再查看 java --version
或着是输入javac 能显示很多信息,就证明java环境已经ok
三、在LInux下安装python环境
1、centos自带了python2.7.5,输入python-V,即可验证查看自带的。这个不能删除,因为有一些依赖这个的
2、我们需要给安装python3的环境
1)首要条件:虚拟机一定要ping通外网
2)然后安装依赖环境
--安装依赖环境这个依赖python2,所以上面的2.7不能删
直接给粘贴上,回车即可
等待安装完成即可
3)下载并安装python3的安装包
(推荐使用这种方式下载)普通下载地址:Index of /ftp/python/3.9.15/
也可以通过命令的方式进行下载(虽然方便,但是速度较慢)
wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz
4)将python3的安装包和jdk安装包一样,通过命令的方式上传到服务器
4.1)先创建一个目录,放python3 的包
在xshell里
4.2)本地进行上传
在cmd里
4.3)查看上传内容
4.4)依次执行如下命令
4.4.1) 先解压
4.4.2)查看解压后内容
4.4.3)进入到解压目录,安装2个依赖包
第一个
-y 是在安装过程中,有很多确认动作,-y表示自动全程yes
4.4.4) 编译和安装
4.4.5)制定编译规则
Linux之所以可以通过命令驱动,是因为所有命令都被存储在usr/bin下,打开bin会看到各种命令
5)创建关联
5.1)打开bin目录
可以查看python3的信息,只有在bin目录下执行./python3的命令才有效
5.2)创建软连接
执行完之后,查看bin目录,里面应该增加 python3
6)配置环境变量
依次执行下面的命令
通过在根目录输入python3 可以查看到信息,就说明都成功了
四、在Linux下安装Jenkins
1、Xshell先创建存放的目录
2、CMD上传文件
上传完成
打开Xshell,查看文件明细,有这个包
3、 直接搞一套新的Jenkins
命令方式
命令直接执行:java-jarjenkins.war --生成一个新的jenkins。
4、复用电脑上之前已经安装好的
4.1)先找到电脑上之前已经安装好的
4.2)先要把这个文件进行压缩,然后上传到Linux上再解压,避免权限问题
4.3)然后去xshell查看文件
.开头的文件是隐藏文件,ls不能查看
4.4)需要通过ls -a来查看
a就是隐藏文件的意思
-a选项是ls命令的一个参数,它的含义是显示所有文件,包括隐藏文件(以点号.开头的文件或目录)。
4.5)解压zip包
unzip命令首先是在系统中没有的,这时需要下载并安装这个命令
4.6)使用解压这个命令
unzip jenkins.zip -d ~
要给解压到home目录下
4.7) 解压完成,查看
5、运行Jenkins
前台启动命令:java-jar jenkins.war
前台启动,一旦Ctrl + C 就会把服务给停掉
需要使用后台启动命令
nohup -jar jenkins.war 是启动命令
>jenkins.log 是日志打到这个文件里
2>&1& 是固定写法
nohup -jar jenkins.war >jenkins.log 2>&1&
这是一条Linux命令,用于在后台运行Java应用程序,并将标准输出和标准错误都重定向到一个日志文件中。下面是对各部分的解释:1. `nohup`:这个命令用于在你退出登录(比如关闭SSH连接)后继续运行进程。它的主要作用是使得进程不受HUP(hang up)信号的影响,防止进程因为终端关闭而被强制结束。2. `-jar jenkins.war`:这个部分表示要运行一个Java应用程序,具体来说是Jenkins的WAR文件。`-jar`选项告诉Java虚拟机(JVM)从指定的JAR文件中加载并执行应用程序。3. `>jenkins.log`:这部分将标准输出(stdout)重定向到一个名为`jenkins.log`的文件中。如果文件不存在,系统会自动创建它;如果文件已存在,系统会覆盖原有的内容。4. `2>&1`:这个部分将标准错误(stderr)也重定向到标准输出(stdout),然后再与上一步骤的`>jenkins.log`结合起来,实际上是将标准错误和标准输出都重定向到同一个日志文件`jenkins.log`中。5. `&`:最后一个`&`符号表示将整个命令放入后台运行,允许你在同一终端窗口中执行其他命令,而不必等待这个命令完成。总的来说,这条命令的作用是启动Jenkins服务器,并将所有的输出(包括标准输出和标准错误)都记录到`jenkins.log`文件中,方便日后查看和调试。同时,由于使用了`nohup`和`&`,即使你退出了SSH连接,Jenkins服务器也会继续在后台运行。
执行完
6、关闭防火墙
如何关闭,需要执行三个命令
首先停掉防火墙
关闭防火墙
查看关闭状态
灰色
7、访问Jenkins
复用的话,账号密码就是复用 那个
可以复用电脑之前安装好的Jenkins的配置,不需要重复配置服务
五、Linux下安装 Gogs +Git应用
1、正常在官网下载即可-gz的包
2、新建文件存放Gogs
3、在CMD上传文件
4、查看上传的文件
5、解压 上传的文件包
6、启动Gogs服务
后台启动
nohup./gogsweb>gogs.log2>&1&
需要进入到gogs的目录,再执行启动命令,才能启动
否则会一直无法启动
7、访问虚拟机的IP+端口
不要立即安装注册,还需要修改一些内容
8、修改Gogs服务配置
0)前置条件:需要安装Git,
前置条件:需要安装Git,否则最后安装Gogs会提示无法识别Git命令
通过命令安装Git即可
yum install git -y
1)选择数据库类型
2)配置虚拟机ip
3)配置运行系统用户
4)创建管理员账号
创建的账号用于后面账号登录
5)点击安装
如果没有安装Git的话,会提示这个
安装完Git,就可以成功安装
9、创建仓库
创建仓库名
创建完,查看这个空仓库
然后需要根据提示的命令,进行一系列创建真实的仓库
1)初始化空仓库
2)上传文件
提示不能上传,因为没有这个文件
执行提示无这个文件,换CMD去执行这个命令
在要执行的文件路径里输入cmd的路径,回车即可,会直接打开这个目录的路径
搞完上面,再上传文件,继续执行上传命令
3)框架提交
4)建立远程连接
执行蓝色的命令即可
5)最后push代码
6)输入Gogs的账号和密码
上面执行push命令,会弹出,需要输入这个地址的账号和密码。需要输入Gogs的账号和密码
刷新,可查看提交的代码
10、在Jenkins里面拉取代码
配置-源码管理
把代码仓库的地址放进去,会报错
正常情况应该如下,下面是解决方案
1、复用Jenkins需要改Jenkins的配置来解决复用的问题:
1)进入到配置里面
2)进入到管理里面
3)修改git
进行保存即可
修改完后,发现代码仓库的地址不报错了
2、管理远程连接地址
1)添加新的钩子
2)配置钩子
获取token
配置服务器的ip
保存发现报错
需要执行下面的命令,需要在gogs的路径下执行命令~
【自己的路径 】就是 gogs所在的路径,
添加到最后一行,再保存
3)需要先终止服务,再重启
不需要,任意路径均可执行查找进程的命令
先安装命令
然后再 执行查看端口对应的进程
5021是进程id
然后kill 进程后,再重启服务,就ok,这时Jenkins就可以拉取仓库的代码了
3、配置Jenkins执行的命令
需要删除掉windows命令
配置的命令:
配置效果
然后需要清除一下之前windows下执行的工作空间
11、生成测试报告
1)修改配置
需要修改为服务器的ip
2)之所以能运行allure,是因为这个包
在linux中,需要把上面这个删除。然后再新增一个
选好版本,会自动安装插件。
如果还是想用本地的,就需要把那个本地的包上传到Linux系统,操作一样
2.1)本地上传的操作
cmd上传到服务器。因为这个包本身是在windows下的,所以要使用cmd上传到Linux虚拟机的服务器上
2.2)在Xshell上查看是否上传成功,并解压到当前目录
./表示当前目录
解压完,可以看到解压后的
复制当前路径。只到这个路径就可以了,不需要再深一层到bin目录
配置到Jenkins上
12、项目修改
下面标注注释掉的,就是指那个需要删除掉的
修改urllib3的版本
13、企业通知和邮件报告,是不需要修改的
问题:
1、
如果linux部署在云服务器,和本地windows是不通的,不能通信。
在本机安装Linux,和本地的windows,相当于内网,是可以通的。
问题2:构建后拿不到对应的allure的包
相关文章:

【持续集成_03课_Linux部署Sonar+Gogs+Jenkins】
一、通过虚拟机搭建Linux环境-CnetOS 1、安装virtualbox,和Vmware是一样的,只是box更轻量级 1)需要注意内存选择,4G 2、启动完成后,需要获取服务器IP地址 命令 ip add 服务器IP地址 通过本地的工具,进…...
mvcc 速读
MVCC(Multi-Version Concurrency Control,多版本并发控制)是MySQL中一种用于实现数据库并发控制的方法,尤其在InnoDB存储引擎中得到了广泛应用。它的主要作用是提高数据库在高并发场景下的性能,并确保数据的一致性。 …...

美容仪维修过程记录
近期维修的家用射频美容仪,发一些维修过程的拆机图片...

STM32入门开发操作记录(一)——新建工程
目录 一、课程准备1. 课程资料2. 配件清单3. 根目录 二、环境搭建三、新建工程1. 载入器件支持包2. 添加模块3. ST配置4. 外观设置5. 主函数文件 一、课程准备 1. 课程资料 本记录操作流程参考自b站视频BV1th411z7snSTM32入门教程-2023版 细致讲解 中文字幕,课程资…...

QT实现自定义带有提示信息的透明环形进度条
1. 概述 做界面开发的童鞋可能都会遇到这样的需求,就是有一些界面点击了之后比较耗时的操作,需要界面给出一个环形进度条的进度反馈信息. 如何来实现这样的需求呢,话不多说,上效果 透明进度条 2. 代码实现 waitfeedbackprogressba…...
金币程序题
昨天,小孩问了我一个python编程竞赛题,我看了一下题目,是一个数列编程的问题,我在想,小学五年级的学生能搞得懂吗?反正我家小孩是没有搞懂,不知道别人家的小孩能不能搞明白。所以我花了一点时间…...

《Windows API每日一练》9.13资源-鼠标位图和字符串
鼠标指针位图(Mouse Cursor Bitmap)是用于表示鼠标指针外观的图像。在 Windows 窗口编程中,可以使用自定义的鼠标指针位图来改变鼠标的外观,并提供更加个性化的用户体验。 ■以下是一些与鼠标指针位图相关的要点: ●…...

【保姆级教程】CenterNet的目标检测、3D检测、关键点检测使用教程
一、代码下载 仓库地址:https://github.com/xingyizhou/CenterNet?tab=readme-ov-file 二、目标检测 2.1 下载预训练权重 下载预训练权重ctdet_coco_dla_2x.pth放到models文件夹下 下载链接:https://drive.google.com/file/d/18Q3fzzAsha_3Qid6mn4jcIFPeOGUaj1d/edit …...
thinkphp:数据库复合查询-OR的使用
完整代码 $data[info] db::table(po_headers_all)->alias(ph) //设置wip_jobs_all的别名->join([vendors > ve], ph.vendor_codeve.vendor_code)->field(ph.po_num,ph.status,ph.vendor_code,ve.vendor_name,ph.po_all_amount,ph.note,ph.order_date,ph.need_dat…...
网络安全那些梗
网络安全领域的梗往往以幽默、讽刺或夸张的方式反映了该领域的某些现象、挑战或误解。以下是一些网络安全相关的梗: 关掉服务器是最有效的安全方法:这个梗源自一个笑话,讲述了一位程序员因误解妻子的话而只买了一个包子回家,随后被…...

交通气象站:保障道路安全的智慧之眼
随着社会的快速发展,交通运输日益繁忙,道路安全成为公众关注的焦点。在这个背景下,交通气象站作为保障道路安全的重要设施,正发挥着越来越重要的作用。它们不仅为交通管理部门提供及时、准确的气象信息,也为广大驾驶员…...

【分库】分库的核心原则
目录 分库的核心原则 前言 分区透明性与一致性保证 弹性伸缩性与容错性设计 数据安全与访问控制机制 分库的核心原则 前言 在设计和实施分库策略时,遵循一系列核心原则是至关重要的,以确保系统不仅能够在当前规模下高效运行,还能够随着…...

【Linux】软件管理工具 yum
文章目录 概念搜索:yum list安装:yum install卸载:yum remove 概念 在Linux下安装软件,可以下载到程序的源代码,进行编译得到可执行程序,另外这些软件还有依赖其它工具的问题,还得下载编译这些依…...
LangChain —— Prompt Templates
文章目录 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates1、使用几个简短示例2、在 chat model 中使用几个简短示例3、部分格式化提示模板4、一起编写提示 一、什么是 Prompt T…...
Python库 - Scrapy
Scrapy 是一个用于爬取网站数据、提取结构性数据的开源和协作框架。它最初是为网页抓取设计的,但也可以用于获取 API 提供的数据或作为通用的网络爬虫。 文章目录 主要特性主要组件使用流程1. 安装 Scrapy2. 创建 Scrapy 项目3. 定义 Item(数据ÿ…...

函数(实参以及形参)
实际参数(实参) 实际参数就是在调用函数时传递给函数的具体值。这些值可以是常量、变量、表达式或更复杂的数据结构。实参的值在函数被调用时传递给对应的形参,然后函数内部就可以使用这些值来执行相应的操作。 int main() {int a 0;int b …...
ArcGIS Pro SDK (八)地理数据库 8 拓扑
ArcGIS Pro SDK (八)地理数据库 8 拓扑 文章目录 ArcGIS Pro SDK (八)地理数据库 8 拓扑1 开放拓扑和进程定义2 获取拓扑规则3 验证拓扑4 获取拓扑错误5 标记和不标记为错误6 探索拓扑图7 找到最近的元素 环境:Visual …...
uniapp如何发送websocket请求
方法1: onLoad() {uni.connectSocket({url: ws://127.0.0.1:8000/ws/stat/realTimeStat/,success: (res) > {console.log(connect success, res);}});uni.onSocketOpen(function (res) {console.log(WebSocket连接已打开!);uni.sendSocketMessage({d…...
RabbitMQ的工作模式
RabbitMQ的工作模式 Hello World 模式 #mermaid-svg-sbc2QNYZFRQYbEib {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sbc2QNYZFRQYbEib .error-icon{fill:#552222;}#mermaid-svg-sbc2QNYZFRQYbEib .error-text{fi…...

自建搜索引擎-基于美丽云
Meilisearch 是一个搜索引擎,主程序完全开源,除了使用官方提供的美丽云服务(收费)进行对接之外,还可以通过自建搜索引擎来实现完全独立的搜索服务。 由于成本问题,本博客采用自建的方式,本文就…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...