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

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laiger90

众筹一元加个菜~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值