CICD持续集成(Jenkins+Git+Gogs)

1.Jenkins

                Jenkins 是一个开源的、用于构建和自动化软件开发流程的持续集成和交付工具。它提供了一个可扩展的平台,用于构建、测试和部署软件项目。通过使用 Jenkins,开发团队可以实现持续集成和交付,自动化构建和测试过程,提高软件开发的效率和质量。从而应用于各种软件开发项目和持续集成流水线中

                Jenkins的主要功能

                1. 自动化构建:Jenkins 可以从源代码版本控制系统(如Git、SVN等)中获取代码,并自                  动触发构建过程。它支持多种构建工具和构建类型,如Maven、Gradle、Ant等。

                2. 持续集成:Jenkins 可以将开发人员的代码变更合并到主干代码,并进行自动构建和                   测试,以确保代码的持续集成和验证。

                  3. 测试和报告:Jenkins 可以集成各种测试工具,如Allure、Selenium、Cucumber等,                 执行自动化测试,并生成测试报告和代码覆盖率报告。

              4. 部署和交付:Jenkins 可以与不同的部署工具和平台集成,自动化应用程序的部署和交               付过程,以实现持续交付和部署。

             5. 插件生态系统:Jenkins 提供了丰富的插件生态系统,允许用户根据需要选择和集成各             种插件,以扩展和定制其功

                Jenkins部署及启动
 

                1. 安装JDK的环境,在CMD当中输入: java -version 显示对应的版本号即可

                【 最新版本要用JDK11 】;

              2. 找到 Jenkins.war 的路径 , 并在改路径下进入cmd 或者 终端;

              3. 输入: java -jar <jenkins.war的路径> ,直至完成

                        然后在网址上输入127.0.0.1:8080 

                第一次构建的Jenkins我们看到的界面如下显示;其中在cmd或者终端搜索initialAdminPassword 则能找到你的admin的初始密码
 

输入该密码,点击 【继续】进入Jenkins项目;第一次进入可能会加载比较缓慢,等待片刻;即会显示下图界面,选择【安装推荐的插件】即可;等待它全部安装完成

然后输入一系列账号设置之后就可以进入主页

Jenkins拉取Git代码

方法一:直接填写命令拉取

        

这个方式不推荐,因为会有对应的层级关系,\workspace \仓库名\文件内容 ;而我们需要的是对应的\workspace下直接是我们的文件内容。换个概念就是把Jenkines看做是我们项目名。 所以这里推荐使用:方法二:使用源码管理拉取代码

方法二:使用源码管理拉取代码


保存项目点击【立即构建】并到工作空间运行后查看效果
 

区别:两者区别

一个是把对应的目录拉取一同放在工作空间中,一个把文件直接放在工作空间中,一般使用后面这种

Jenkins常用场景-构建触发器

                当我们拉取好了之后怎么进行定时的进行跑对应的脚本呢或者每隔多久进行跑脚本呢?那么在【构建触发器】当中有一个定时构建(Build periodically)
                

                        

此字段遵循Cron表达式的语法(略有不同)。具体地说,每行由5个字段组成,这些字段由TAB或空格分隔,用于指定任务何时执行
 

MINUTE HOUR DOM MONTH DOW


他们分别表示

MINUTE (分钟): 指定小时内的分钟数。取值范围为 0-59。

HOUR (小时): 指定一天内的小时数。取值范围为 0-23。

DOM (月份的第几天): 指定一个月内的日期。取值范围为 1-31。MONTH (月份): 指定一年内的月份。取值范围为 1-12。

DOW (星期几): 指定星期几。取值范围为 0-7,其中 0 和 7 都表示星期天

这些字段组合在一起,可以创建一个 cron 表达式,用于定时执行任务。例如,如果你的 cron 表达式是 "0 2 * * *" ,则表示任务在每天的凌晨 2点执行
 

以下是Cron表达式的一些常见用法示例

每15分钟构建一次: H/15 * * * * 或 */15 * * * *

每天8点构建一次: H 8 * * * 或 0 8 * * *

每天8点~17点,两小时构建一次: H 8-17/2 * * *

周一到周五,8点~17点,两小时构建一次: H 8-17/2 * * 1-5

每月1号、15号各构建一次,除12月: H H 1,15 1-11 *

Jenkins项目关联触发

比如一个项目构建完成之后,自动构建下一个脚本(项目)。那么在【构建触发器】当中有一个其它工程构建后构建(Build after other projects are built)

        

操作步骤

        第一步:创建一个新项目可以直接复制之前的项目。【假设这个是开发的项目】

        

                第二步:设置当前这个项目在API_Test(之前的项目)构建成功了,自动执行
        

                        

第三步:执行开发项目(ShopProject),自动执行测试项目(Api_test)

2.触发远程构建及Gogs的应用
 

                触发远程构建简单理解:当你的代码有更新的时候,希望Jenkins能够自动执行。但是因为对于Jenkins的触发远程构建触发,需要使用Webhook(钩子函数)要在同一个网络中。而像Gitee、GitLab、GitHub都是属于公共仓库,因此我们一般对应的源代码都在本地的仓库当中(包括很多同学都是内网的情况),所以常使用Gogs作为一个轻量级的自托管Git服务。

安装步骤

        1.根据你的系统选择安装包并且解压,放在非中文目录下;

      2. 进入到目录,输入: gogs web 即能启动服务;

      3. 待启动完毕之后,直接访问: http://127.0.0.1:3000/ 即可打开

操作步骤如下

1.新建一个文件夹,输入初始化的命令

git init

  2.把相关的文件中的文件复制到当前目录下

3.第一次提交会提示输入Gogs的账号密码,输入之后,刷新页面即可

        

               Gogs结合Jenkins进行构建

                1.设置【源码管理】,并且设置URL及对应的gogs的账号密码

Gogs结合Jenkins触发远程构建

        1.第一步:进入到Gogs的:gogs\custom\conf\app.ini文件底部添加数据并且重启Gogs 

        # 127.0.0.1 为Jenkins的IP地址

        LOCAL_NETWORK_ALLOWLIST = 127.0.0.1

 2.搜索 : Jenkins—>系统管理—>插件管理—>可选插件 搜索 Generic Webhook Trigger 选择进行下载即可(注意:下载之后记得重启Jenkins)



第三步:在Jenkins中 构建触发器 -勾选 Generic Webhook Trigger 并且随意填写 token值

第四步:在gogs当中添加Webhook:


http://127.0.0.1:8080/generic-webhook-trigger/invoke?token=值

当你的Gogs的代码更新,你可以在Jenkins看到项目被调用了


流程图

​​​​​​​
  
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++Primer Plus 第十四章代码重用:14.4.7 成员模板

CPrimer Plus 第十四章代码重用 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;CPrimer Plus 第十四章代码重用&#xff1a;14.4.7 成员模板 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如…

【算法训练记录——Day37】

Day37——贪心Ⅴ 1.leetcode_56合并区间 1.leetcode_56合并区间 思路&#xff1a;排序&#xff0c;如果重叠&#xff0c;更新right 为max(right, curVal), 不重叠就加入res,需要单独考虑最后一次&#xff0c;因为每次都是在下一次遍历开始时判断是否加入res&#xff0c;因此 当…

基于Java的广场舞团管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S架构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 社团活…

AI是如何与快充技术结合的?

针对AI技术在快充领域的运用&#xff0c;我们可以进一步深入探讨AI如何与快充技术结合&#xff0c;提升充电效率和用户体验。以下是一些具体的AI技术在快充领域的应用场景&#xff1a; 一、智能充电算法 学习充电模式&#xff1a;AI算法可以学习用户的充电习惯&#xff0c;比…

微服务中的Feign远程调用

Feign的个人理解 Feign在英文中是“装”的意思&#xff0c;但在微服务中他是远程调用的一种方式&#xff0c;我的理解是&#xff1a;他替代了RestTemplateNacos中的URL编码的方式&#xff0c;显得很高大上&#xff0c;所以很装&#xff1a;&#xff08;声明式事务&#xff0c;只…

端口扫描攻击检测及防御方案

端口扫描数据一旦落入坏人之手&#xff0c;可能会成为更大规模恶意活动的一部分。因此&#xff0c;了解如何检测和防御端口扫描攻击至关重要。 端口扫描用于确定网络上的端口是否开放以接收来自其他设备的数据包&#xff0c;这有助于网络安全团队加强防御。但恶意行为者也可以…

AI Prompt 提示词编写公式

自 OpenAI 的 ChatGPT 横空出世至今&#xff0c;各种 AI 大模型百花齐放、百家争鸣。按照用途可以分为两类&#xff1a; 对话类&#xff1a;即通过文字、语音、图片或者视频输入来给模型下达指令&#xff0c;然后模型按照指令以文字的形式将回答输出给用户&#xff1b;生成类&…

Web缓存代理和CDN 内容分发网络

目录 1.WEB缓存代理 1.1 WEB缓存代理作用 1.2 常见WEB缓存代理 1.3 Nginx 配置 缓存代理 2. CDN内容分发网络 1.WEB缓存代理 1.1 WEB缓存代理作用 存储一些之前给访问过的&#xff0c;且可能要被再次访问的静态网页资源对象&#xff0c;使客户端可以直接从缓存代理服务器…

钡铼BL104智慧环保多个485采集转MQTT无线传输

PLC物联网关BL104是一款专为工业环境设计的先进协议转换网关&#xff0c;其集成了钡铼智能技术和环保多个485采集转MQTT无线传输功能&#xff0c;为工业控制系统提供了高效的数据采集、传输和管理解决方案。 技术规格与功能特点 PLC物联网关BL104采用钡铼智能技术&#xff0c…

OpenCV学习之cv2.imshow()函数

OpenCV学习之cv2.imshow()函数 一、简介 cv2.imshow 是 OpenCV 库中用于显示图像的基本函数之一。在图像处理和计算机视觉的过程中&#xff0c;使用该函数可以快速预览处理后的图像&#xff0c;便于调试和结果展示。 二、基本语法 cv2.imshow(WindowName, Imgmat)三、参数说…

队列的相关知识

目录 创建 初始化 销毁 头插 尾删 取出头 取出尾 数字个数 判空 队列的性质与特征 性质&#xff1a;一种先进先出的线性表 特征&#xff1a;FIFO&#xff08;先进先出&#xff09; 实现&#xff1a;用数组和链表的都可以 例子&#xff1a;在生产者消费者模型用到了…

工单管理系统:开启企业降本增效的快车道-亿发

在现代企业的运营过程中&#xff0c;提升效率和降低成本是企业永恒的主题。传统的物流和售后管理方式往往依赖线下沟通&#xff0c;不仅效率低下&#xff0c;还存在流程无痕迹的问题&#xff0c;难以追溯责任&#xff0c;影响企业的整体运营效率。针对这些痛点&#xff0c;工单…

怎么把amr格式转换为mp3格式?这6个mp3格式转换方法不容错过!

怎么把amr格式转换为mp3格式&#xff1f;AMR&#xff08;自适应多速率&#xff09;是一种音频编码格式&#xff0c;通常用于存储基于语音的文件&#xff0c;例如语音记录和VoIP应用&#xff0c;在3G移动设备上使用。它具有非常高的压缩比&#xff0c;导致声音质量较差。早期的安…

【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark

论文&#xff1a;GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding ⭐⭐⭐⭐ arXiv:1804.07461, ICLR 2019 Site: https://gluebenchmark.com/ 文章目录 一、论文速读二、GLUE 任务列表2.1 CoLA&#xff08;Corpus of Linguistic Accep…

pandas合并,拆分excel

目录 一:按照列进行拆分 二:将某几列的数据写入新excel 三:合并两个sheet数据到一个excel的一个sheet中 我们以商品销售明细为例,说明下excel的数据拆分和合并,我们的原始数据如下: 一:按照列进行拆分 现在我们需要统计下是否配送和支付方式为维度进行分组以后得数据…

【名企专访】|格行自有格行的骄傲,格行骄傲在哪?格行随身wifi火爆出圈的真实内幕!

最近刷视频在一个随身wifi的帖子下边看到&#xff0c;有个网友这样回复&#xff1a;“随身wifi行业真的该整治了&#xff0c;到处是跑路的&#xff0c;夸大宣传的&#xff0c;本来在线上买就是图个方便&#xff0c;现在搞得不敢买。本来利民的产品&#xff0c;被搞得乌烟瘴气&a…

【推荐】Prometheus+Grafana企业级监控预警实战

新鲜出炉&#xff01;&#xff01;&#xff01;PrometheusGrafanaAlertmanager springboot 企业级监控预警实战课程&#xff0c;从0到1快速搭建企业监控预警平台&#xff0c;实现接口调用量统计&#xff0c;接口请求耗时统计…… 详情请戳 https://edu.csdn.net/course/detai…

Clonable接口和拷贝

Hello~小伙伴们&#xff01;本篇学习Clonable接口与深拷贝&#xff0c;一起往下看吧~(画图水平有限&#xff0c;两张图&#xff0c;&#xff0c;我真的画了巨久&#xff0c;求路过的朋友来个3连~阿阿阿~~~) 目录 1、Clonable接口概念 2、拷贝 2、1浅拷贝 2、2深拷贝 1、Clon…

生命在于学习——Python人工智能原理(2.3.3)

三、Python的数据类型 3.2 Python的组合数据类型 特点&#xff1a;表示多个元素的组合&#xff0c;可以包含不同类型的元素&#xff0c;甚至是其他的组合数据类型。 在内存中通常需要额外的空间来存储元素间的关系。 组合数据类型能够将多个同类型或不同类型的数据组织起来&a…

MAS0902量产工具分享,MAS0902A开卡教程,MAS0901量产工具下载

MAS0902和MAS1102都是基于SATA3.2技术开发的DRAM-less SSD控制芯片&#xff0c;简单来说就是SATA协议无缓存主控。下面是我摸索的麦光黑金300 240G SSD开卡修复简易教程&#xff0c;也就是MAS0902量产过程&#xff1a; 注意&#xff1a;开卡转接线必须要用ASM1153E或JMS578主控…