Dotnet 项目手动部署到AWS 和Github action CICD 流程总结

.NET 项目手动部署到 AWS

材料准备

  1. 前端 build 后的 zip 文件(文章中称为 frontend.zip)

  2. 后端 publish 后的文件(文章中称为 backend.zip)

工具选择

  • 后端应用:AWS Elastic Beanstalk

  • 前端静态文件:S3

部署步骤

1. 部署后端

选择 Beanstalk 服务,上传后端文件,配置对应的 properties 参数(类似环境变量)。

然后选择服务器大小、CPU 类型,配置安全组等。

配置成功后会获得一个 domain URL 地址,这是云上访问后端的地址。

2. 设置数据库

使用 AWS 的 RDS 部署关系型数据库 SQL Server。

设置相关参数,最关键的是数据库 master 账号的用户名和密码要记住,后续连接数据库时会用到。

数据库设置好后会有一个 domain URL,这就是数据库服务器的地址,要用在 connection string 里面,例如:

复制代码
"ConnectionStrings": {   
    "RecamDb": "Server=数据库URL,1433;Database=数据库名字;User Id=数据库账号名;Password=数据库密码;...其他参数"
}

3. 部署前端

运行 build 命令后会得到一个 dist 文件夹,这是前端文件的压缩版。

将此文件上传到 S3 bucket,配置好 properties 等设置。bucket 创建好后会有一个 URL:Bucket website endpoint,这就是前端网页的访问入口。

此时点击页面无法打开,因为 index.html 不知道去哪里访问后端。

4. 配置前端环境变量

将第一步 Beanstalk 获得的 domain URL 信息添加到前端的环境配置文件中,这样前端就知道去哪里 fetch 后端数据了:

复制代码
VITE_API_BASE_URL=你的beanstalk URL网址

这个变量名 VITE_API_BASE_URL 可以自定义,用于后面 fetch 后端接口的变量名。

注意:商业开发中,开发环境和生产环境要分开。

环境变量会设置两个版本,在本地开发运行 npm run dev 会自动连接 dev 环境变量后端。当部署到云端时,运行 build 命令,React 框架会自动选择生产环境变量进行打包。用户访问云端前端时,会自动连接云上配置的后端,而不是开发时用的本地后端。

前后端都部署完成后,就可以访问 S3 bucket 网址。如果前后端服务器连接正常,就能正常打开应用界面了。

Part 02: CI/CD

前言

如果项目有改动每次都手动部署会很麻烦,我们可以通过 CI/CD 自动化这个过程。

工具与材料

  • 工具:GitHub Actions

  • 材料

    • GitHub 中的 workflow(template),即 deploy.yml 文件

    • AWS secret key

流程说明

当有 PR(pull request)到主分支,或其他请求符合 GitHub Actions 中设置的 "on" 触发条件时,就会启动 CI 流程。deploy.yml 文件定义了具体的执行步骤,甚至可以添加逻辑代码判断或调用 marketplace 中现成的脚本(比如 Beanstalk 的自动部署脚本)。

CI 完成后,通常需要人工审核代码。审核通过后进入 CD 步骤,实现自动部署。我们不再需要手动将修改后的 zip 文件上传到 Beanstalk,CD 命令会自动执行。

它是怎么执行的?

我们需要将 Beanstalk 的密钥相关信息提供给它,它通过 AWS API 访问 Beanstalk 资源并执行相应操作。

AWS 密钥生成

在 AWS 中,如果您不是超级用户,管理员会通过 IAM 为您设置操作相关资源的权限。有了权限后,可以在 Beanstalk 中设置外部访问的 key(类似 token),叫做 access key。

将这个 access key 放在 GitHub Actions 的 workflow 中,当 access key 信息验证通过后,它就能代表您对 Beanstalk 执行所有被授权的操作。

完整流程

这就是完整的 CI/CD 流程。在某些商业场景下,部署到生产环境成功后,可能还会对生产环境进行相应的测试。

相关推荐
leijiwen15 小时前
Bsin-PaaS(毕昇)——LinkLifeVerse OS 的产业智能工程底座
云原生·云计算·paas
DolitD18 小时前
无人机×云渲染:点量云流实时交互云推流方案
3d·云计算·数据可视化·虚拟现实
hz5678919 小时前
内网视频会议系统建设方案:适合政企单位的安全会议选择
安全·云计算·音视频·实时音视频·信息与通信
Qimooidea1 天前
祁木 CAD Translator:基于阿里云百炼与 DeepSeek 的图纸翻译实战
阿里云·云计算
楚来客1 天前
云计算全栈架构详解
云计算
Elastic 中国社区官方博客1 天前
如何为阿里云 Elasticsearch 创建推理端点,连接器,Workflow 并写入数据
大数据·人工智能·elasticsearch·搜索引擎·阿里云·云计算·全文检索
Database_Cool_1 天前
实时计数器/排行榜首选:阿里云 Tair 高并发数据结构实践
数据结构·数据库·阿里云·云计算
hey you~1 天前
呼叫中心系统技术选型全景指南:从CTI架构到云原生演进的技术决策框架
系统架构·云计算·技术选型·呼叫中心·cti
Devlive 开源社区1 天前
一口气新增三家云——七牛云 Kodo、AWS S3、Cloudflare R2;并支持应用内自动检测与一键升级
云计算·aws
小白考证进阶中2 天前
阿里云认证重要通知(Clouder+ACX职业岗位)
阿里云·云计算·阿里云acp报名·阿里云acp备考·阿里云aca证书·阿里云aca大模型·阿里云aca报名