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;使客户端可以直接从缓存代理服务器…

【代码随想录训练营】【Day 60】【动态规划-13】| Leetcode 647, 516

【代码随想录训练营】【Day 60】【动态规划-13】| Leetcode 647, 516 需强化知识点 动态规划-回文系列 题目 647. 回文子串 注意sum&#xff08;dp&#xff09;不行j的遍历要倒序&#xff0c;并且 for j in range(i, n): class Solution:def countSubstrings(self, s: st…

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;执行的代码…

Python转换图片为BITMAP供OLED屏幕显示

最近在玩ESP32&#xff0c;外接了一个0.96寸的oled屏幕&#xff0c;不想找取模软件了&#xff0c;直接gpt生成代码&#xff0c;小改一下直接用了。 字体下载地址&#xff1a;https://fonts.google.com/selection?queryNotoSans from PIL import Image, ImageDraw, ImageFont…

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

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

Leetcode 450:删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…

6月29日,每日信息差

第一、位于四川省绵阳市的中广核质子治疗装备制造基地正式通过竣工验收&#xff0c;为全球装机数量和治疗患者数量最多的国际领先质子治疗系统全面国产化奠定了坚实基础。质子治疗作为目前全球最尖端的肿瘤放射治疗技术之一&#xff0c;与传统放疗技术相比&#xff0c;质子治疗…

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

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

安装llama_factory

第一版&#xff1a; nvidia-smigit clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml pip install --upgrade huggingface_hub llamafactory-cli webui llamafactory-cli webui -…

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

java输出小写的a-z以及大写的Z-A

如果是C语言&#xff0c;可以直接使用格式化输出中的%c 但是Java没有&#xff0c;所以可以1、强制类型转化&#xff1b;2、for循环递增变量中直接定义为char类型 方法一&#xff1a;强制类型转化 //2024.06.29 public class Homework07{public static void main(String[] arg…

卷积、池化小记

卷积和池化是深度学习中&#xff0c;特别是在卷积神经网络&#xff08;CNN&#xff09;中非常重要的两个概念。下面我将分别详细解释卷积和池化的定义、作用以及常见的类型。 卷积&#xff08;Convolution&#xff09; 1. 定义 卷积是通过两个函数f和g生成第三个函数的一种数…

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

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

STM32CUBEMX配置USB虚拟串口

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

RStudio学习笔记(二):向量

在R语言中&#xff0c;向量类似于数学上的集合概念&#xff0c;由一个或多个元素构成。指用于存储数值型、字符型、逻辑型数据的一维数组。 1、向量的创建 # R语言中向量的创建可以通过函数c()x <- c(1,2,3,4,5) # 存储数值型y <- c("one","two&q…

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;初期版本…