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看到项目被调用了


流程图

​​​​​​​
  
 

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

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

相关文章

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

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

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

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

KBL410-ASEMI智能AI专用整流桥KBL410

编辑&#xff1a;ll KBL410-ASEMI智能AI专用整流桥KBL410 型号&#xff1a;KBL410 品牌&#xff1a;ASEMI 封装&#xff1a;KBL-4 正向电流&#xff08;Id&#xff09;&#xff1a;4A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌电流&#xff1a;2…

【计算机毕业设计】基于微信小程序的电子购物系统的设计与实现【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

Python逻辑控制语句 之 判断语句--if语句的基本结构

1.程序执行的三大流程 顺序 分支&#xff08;判断&#xff09; 循环 2.if 语句的介绍 单独的 if 语句,就是 “如果 条件成⽴,做什么事” 3.if 语句的语法 if 判断条件: 判断条件成立&#xff0c;执行的代码…

防止多次点击,vue的按钮上做简易的防抖节流处理

话不多说,上个视频,看看是不是你要的效果 防抖节流 1.创建一个directive.js // directive.js export default {install(Vue) {// 防重复点击(指令实现)Vue.directive(repeatClick, {inserted(el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabl…

C#微信预约挂号系统全套源码,适用于各级公立和民营医院,与院内his、lis、pacs系统对接。

C#微信预约挂号系统源码&#xff0c;团队自主研发&#xff0c;三甲医院应用多年&#xff0c;系统稳定&#xff0c;功能齐全&#xff0c;支持二次开发&#xff0c;项目使用。 微信预约挂号系统可以让患者足不出户就可以利用微信进行在线挂号&#xff0c;实现分时段就诊&#xff…

【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…

在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?

在晋升受阻或遭受不公待遇申诉时&#xff0c;这样写是不是好一些&#xff1f; 在职场中&#xff0c;晋升受阻或遭受不公待遇是员工可能面临的问题之一。面对这样的情况&#xff0c;如何撰写一份有效的申诉材料&#xff0c;以维护自己的合法权益&#xff0c;就显得尤为重要。#李…

STM32CUBEMX配置USB虚拟串口

STM32CUBEMX配置USB虚拟串口 cubemx上默认配置即可。 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 配置完后生成工程&#xff0c;主要就是要知道串口的收发接口就行了。 发送&#xff1a;CDC_Transmit_FS()&#xff0c;同时记得包含头文件#include “…

shopify入门教程-应用开发(二)

4.内网穿透 为什么要用这个&#xff0c;就是把电脑上的开发内容通过内网穿透显示到你的开发店铺上。这里的内网穿透我用了ngrok,花生壳&#xff0c;但都不如shopify官方推荐的cloudflare好用。所以这里我也推荐cloudflare。 运用内网穿透2个步骤 把app运行起来 ​​​​​​​…

YOLO网络结构特点收录

YOLO网络结构特点收录 YOLO&#xff08;You Only Look Once&#xff09;网络结构随着版本迭代不断进化&#xff0c;以下是一些关键版本的网络结构特点概述&#xff1a; YOLOv1 输入&#xff1a;将图像调整至固定尺寸&#xff0c;如448x448像素。骨干网络&#xff1a;初期版本…

RocketMQ源码学习笔记:Broker接受消息和发送消息

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、技术亮点2.1、消息写入时的自旋锁和可重入锁2.2、堆外内存机制2.2.1、Overview2.2.2、源码2.2.2.1、开启堆外内存的条件2.2.2.2、堆外内存的初始化2.2.2.3、写消息到堆外内存2…

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

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

鉴权开发框架Django REST framework的应用场景

目录 一、鉴权开发框架介绍二、Django REST framework是什么三、如何实现认证、权限与限流功能四、Django REST framework的应用场景 一、鉴权开发框架介绍 鉴权开发框架是一种用于实现身份验证和授权的软件开发工具。它可以帮助开发者快速构建安全、可靠的身份验证和授权系统…

24级中国科学技术大学843信号与系统考研分数线,中科大843初复试科目,参考书,大纲,真题,苏医工生医电子信息与通信工程。

(上岸难度&#xff1a;★★★★☆&#xff0c;考试大纲、真题、经验帖等考研资讯和资源加群960507167/博睿泽电子信息通信考研咨询&#xff1a;34342183) 一、专业目录及考情分析 说明: ①复试成绩:满分100分。上机满分50分&#xff0c;面试满分150分&#xff0c;复试成绩(上机…

ros1仿真导航机器人 基础传感器数据读取

仅为学习记录和一些自己的思考&#xff0c;不具有参考意义。 1 仿真环境 gazebo、rviz、ros1 2 机器人模型 <?xml version"1.0"?> <robot name"wpb_home_gazebo"><link name"base_footprint"><visual><origin …

C++进阶

C进阶 一、细节1.cout与输出缓冲区2.constexpr3.NULL和nullptr是不同的类型4.关于inline5.函数杂合用法6.const char*、char const*、char * const7.进程地址空间&#xff0c;所谓静态区常量区不准8.位运算9.多态9.1 内存切片9.2 转型9.3 构造函数和析构函数里是静态绑定9.4 dy…

DP:解决路径问题

文章目录 二维DP模型如何解决路径问题有关路径问题的几个问题1.不同路径2.不同路径Ⅱ3.下降路径最小和4.珠宝的最高价值5.地下城游戏 总结 二维DP模型 二维动态规划&#xff08;DP&#xff09;模型是一种通过引入两个维度的状态和转移方程来解决复杂问题的技术。它在许多优化和…

docker容器内为什么能解析宿主机的hosts文件

Docker容器可以通过特定的网络设置来解析宿主机的hosts文件&#xff0c;这是因为Docker容器在创建网络时&#xff0c;会自动将宿主机的DNS配置信息传递给容器。 当你启动一个Docker容器时&#xff0c;如果没有指定任何DNS相关的选项&#xff0c;Docker默认会使用宿主机的DNS配…