当前位置: 首页 > article >正文

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介绍。


http://www.kler.cn/a/287860.html

相关文章:

  • 【软件测试】一个简单的自动化Java程序编写
  • Neo4j Desktop 和 Neo4j Community Edition 区别
  • 2024-11-16-机器学习方法:无监督学习(1) 聚类(上)
  • 【Linux系统编程】第四十六弹---线程同步与生产消费模型深度解析
  • 游戏引擎学习第八天
  • Spring Batch :高效处理海量数据的利器
  • FPGA与高速ADC接口简介
  • 谷粒商城实战笔记-275~276-商城业务-订单服务-订单确认页完成
  • 两阶段最小二乘法2SLS和Heckman两阶段回归Stata代码(附示例数据)
  • Hadoop的HA配置与实现(ZooKeeper)
  • 华为设备默认密码
  • 记一次ssh伪终端修改为shell
  • 3.3 语法规则
  • 设计模式--享元模式
  • 春秋云镜(ZZCMS 2023)·CVE-2023-50104
  • 【GPT】Coze使用开放平台接口-【7】Dify 比较篇
  • Git —— 2、配置本地与远程免密仓库免密访问、实操创建本地仓库与上github新仓库关联
  • 龙芯+FreeRTOS+LVGL实战笔记(新)——01准备开发环境
  • 使用Python+docx+sqlite3将Word表格内容写入sqlite表中
  • 洛谷8.30
  • 算法笔记|Day38动态规划XI
  • 【化学方程式配平 / 3】
  • 网络:IPv6
  • C++:结构体变量可以被多个cpp文件共同使用
  • 大数据系统测试——大数据系统解析(上)
  • 秒级日期空间如何查询整天数据而不是截止到00:00:00到23:59:59?