0基础轻松玩转.NET Web API 8.0【CICD】项目实战

2024-09-03 04:04

本文主要是介绍0基础轻松玩转.NET Web API 8.0【CICD】项目实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.背景

最近在学习CI/CD,为了加快熟悉CI/CD,我实操了下基于.Net 8.0的CI/CD项目实战。Ci/CD就是自动化作业,实现项目自动编译、发布、执行等,也有用于拉取推送数据的场景。本文主要介绍了在win 11下搭建CI/CD,实现自动发布.net 8.0 WebAPI,并支持代码更新后的发布。通过本文可以快速了解CI/CD流程和思路,不过暂时还没接入docker容器,后续抽空会出支持dokcer的CI/CD文章。

2.知识储备

2.1 CI/CD概念

CI/CD就是项目自动化。解放手工操作,将项目自动编译,自动发布,自动执行。这里的项目,我们定义为.NET Web API 8.0;

2.2 CI/CD架构

下面是1个完整的CI/CD架构图:

VS2022:开发IDE

gitee:码云,国内版的github

jenkins:CI/CD工具

项目:操作的目标对象,本文是.NET Web API 8.0

路由侠:内网映射工具

这里可能会有疑问?为什么要用路由侠去做内网映射了?
答案:gitee在代码提交后,可能会触发jenkins流水线任务等,底层原理是调用jenkins接口,让jenkins去干活。在我们这架构模式下,gitee是外网模式,jenskin是部署在内网,比如本地电脑。这样就需要内网映射到外网。在gitee上面就能访问到jenkins接口。

当然,如果你在服务器上部署jenkins,那就不需要内网映射了。直接通过服务器ip或者域名就能解析。

2.3 CI/CD环境准备

2.3.1 项目准备

新增 .NET Web API 8.0项目:WebAPI_CICD

新增CICDController,代码如下

using Microsoft.AspNetCore.Mvc;namespace WebAPI_CICD.Controllers
{[ApiController][Route("[controller]/[action]")]public class CICDController : ControllerBase{private readonly ILogger<WeatherForecastController> _logger;public CICDController(ILogger<WeatherForecastController> logger){_logger = logger;}[HttpGet(Name = "GetCICD")]public string GetCICD(){return $"CI/CD部署成功:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}";}}
}

2.3.2 gitee准备

官网地址:Gitee - 基于 Git 的代码托管和研发协作平台

创建仓库 WebAPI_CICD:

2.3.3 jenkins准备

官网下载安装包,安装到本地win11电脑,安装教程可以百度;

经过几分钟的安装后,打开jenkins,地址:工作台 [Jenkins]

2.3.4 路由侠准备

官网下载, 安装到本地win11电脑,安装比较简单;

安装成功后,打开软件主界面

2.4 CI/CD架构实战

2.4.1 项目上传

将.net 8.0项目上传到gitee

将gitee上面的仓库地址,复制到VS2022的 远程URL

2.4.2 下载项目

在jenkins上面下载项目源代码。下面是操作步骤

选择 保存

验证jenkins是不是能从gitee拉取代码?按照下列操作来验证

可以明显看出,项目源代码下载成功。代码下载的路径是

 C:\ProgramData\Jenkins\.jenkins\workspace\WebAPI_CICD

额外介绍,jenkins工作目录是 

 C:\ProgramData\Jenkins\.jenkins\workspace

2.4.3 运行项目

在jenkins进行配置,就能将下载后的项目源代码,运行起来,下面是操作步骤

验证jenkins是不是正常运行项目?按照下列操作来验证

从上图可以看到运行项目成功。拼接地址/CICD/GetCICD后,地址为 http://localhost:5089/CICD/GetCICD,浏览器访问如下:

验证jenkins运行项目是成功的。

2.4.4 更新项目

目标:代码提交到分支,需要触发CI/CD。

思路:1.在本地win11电脑配置内网映射,将本地jenkins映射到外网;2.gitee webhook触发jenkins构建:自动拉取代码,编译,发布,运行项目。

接下来,按照下图去配置:

使用路由侠工具,进行内网映射,将jenkins映射到外网进行访问

将上图的公网地址http://laiger.w1.luyouxia.net,放到浏览器访问

明显看到。我们内网映射配置成功。现在jenkins支持公网访问了。

在jenkins页面正常输入用户名和密码,进行登录后如下所示:

到这里,jenkins内网映射配置完成,接下来是配置gitee webhook触发jenkins构建的过程;

 在jenkins安装插件Gitee Plugin

接下来配置 gitee webhook:

根据上图,又因为jenkins已经做了 内网映射,所以 Gitee webhook地址是

http://laiger.w1.luyouxia.net/gitee-project/WebAPI_CICD

按照下面操作,生成gitee webhook密码,将密码记下来

拿到gitee webhook地址和密码后,去gitee按照下图去配置

在VS2022 修改源代码,推送到gitee会触发jenkins任务

提交到后,发现jenkins已经触发了构建任务

检查下.Net WebAPI 8.0项目是不是最新版本

显而易见,版本已经成功更新

2.5 CI/CD原理分析

CI/CD关键是jenkins,无非就是是作业自动化。将作业定义为流水线,支持各种操作,比如脚本、接口等等,实现了自动作业的功能。

3.结束

本文是CI/CD简单版本的探索,属demo系列。正常部署生产环境,是在服务器部署jenkins,无需内网映射,公司内自建gitlab仓库等,用docker容器去部署。后续抽空出支持容器的CI/CD介绍。

这篇关于0基础轻松玩转.NET Web API 8.0【CICD】项目实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131966

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例