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

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar