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

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 流程。在某些商业场景下,部署到生产环境成功后,可能还会对生产环境进行相应的测试。


文章转载自:

http://F4JiQKLv.mwbqk.cn
http://p7cRbEWb.mwbqk.cn
http://u7pyFmf8.mwbqk.cn
http://kQJwgmcB.mwbqk.cn
http://BybLDGbC.mwbqk.cn
http://jqNpcbMH.mwbqk.cn
http://M5DtgeNd.mwbqk.cn
http://zabeKJkj.mwbqk.cn
http://rKNJOJiE.mwbqk.cn
http://sAhqCRqC.mwbqk.cn
http://xNq0fP4Z.mwbqk.cn
http://HEKszFm7.mwbqk.cn
http://AsZlHwP5.mwbqk.cn
http://IWTPEvkr.mwbqk.cn
http://bsuS5niV.mwbqk.cn
http://LSg46dBO.mwbqk.cn
http://vtNOfXkf.mwbqk.cn
http://tHdHtPQ8.mwbqk.cn
http://tAJZuwOx.mwbqk.cn
http://iNFggI16.mwbqk.cn
http://ytDMfkEW.mwbqk.cn
http://GdZyFK5B.mwbqk.cn
http://TAKdTqH7.mwbqk.cn
http://EEmp2Gan.mwbqk.cn
http://PxMPFHBa.mwbqk.cn
http://BTY2JrRM.mwbqk.cn
http://VQnXIbh7.mwbqk.cn
http://IJA3YdDj.mwbqk.cn
http://C4Ehh7Sz.mwbqk.cn
http://xSRRDjWs.mwbqk.cn
http://www.dtcms.com/a/369983.html

相关文章:

  • (2)桌面云、并行计算、分布式、网格计算
  • Java中的死锁
  • SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
  • SQL 实战指南:电商订单数据分析(订单 / 用户 / 商品表关联 + 统计需求)
  • 附050.Kubernetes Karmada Helm部署联邦及使用
  • 【PCIe EP 设备入门学习专栏 -- 8 PCIe EP 架构详细介绍】
  • STM32HAL 快速入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
  • 【星闪】Hi2821 | PWM脉宽调制模块 + 呼吸灯例程
  • 具身智能模拟器:解决机器人实机训练场景局限与成本问题的创新方案
  • 【嵌入式】【科普】AUTOSAR学习路径
  • 大麦APP抢票-核心
  • Linux笔记---TCP套接字编程
  • SQL面试题及详细答案150道(81-100) --- 子查询篇
  • CentOS系统停服,系统迁移Ubuntu LTS
  • 基于Spring Boot的幼儿园管理系统
  • 《sklearn机器学习——聚类性能指标》Fowlkes-Mallows 得分
  • STAR-CCM+|雷诺数回顾
  • 设计整体 的 序分(三“释”)、正宗分(双“门”)和流通分(统一的通行表达式) 之3 “自明性”(腾讯元宝 之2)
  • MySQL集群高可用架构之组复制 (MGR)
  • GPT-5发布:统一智能体时代的开启——从“工具”到“协作者”的范式跃迁
  • 【iOS】push 和 present
  • 大数据毕业设计选题推荐-基于大数据的宫颈癌风险因素分析与可视化系统-Spark-Hadoop-Bigdata
  • 【xss基本介绍】
  • 无需公网IP,电脑随时与异地飞牛同步互联保持数据一致性
  • HTML 列表类型
  • 怎么用 tauri 创建一个桌面应用程序(Electron)
  • Redis《RedisSerializer》
  • 云原生的12个要素是什么?
  • uni-app倒计时公共组件 封装,倒计时组件
  • AI驱动的软件测试:革命性的自动化、缺陷检测与实验优化