如何通过Azure DevOps在本地IIS服务器部署静态网站
静态站点Azure DevOps本地IIS双分支自动部署方案
这个需求完全可以实现,不需要套用.NET Core项目的部署逻辑,静态站点的部署链路更简单,下面先给你全程不需要写YAML的可落地配置流程:
一次性前置准备
- 本地Windows服务器先完成IIS基础配置:分别创建两个独立IIS站点,通过不同端口或域名区分,分别对应master、test分支的访问入口,提前规划好两个站点的物理目录,比如
D:\www\prod、D:\www\test,给IIS应用池对应的运行账号分配这两个目录的读写权限 - 进入Azure DevOps项目的部署组模块,新建一个部署组,按照页面提示在本地服务器上运行生成的PowerShell配置脚本,把本地服务器注册到该部署组,注册完成后Azure DevOps就可以直接向这台服务器推送文件、执行IIS管理操作
- 本地服务器提前安装IIS管理服务、Web Deploy组件,后续可以直接用Azure DevOps内置任务完成文件同步、站点重启,不需要手写部署脚本
无YAML经典流水线配置
- 进入Azure DevOps Pipelines板块,新建流水线时直接选择「使用经典编辑器创建」,跳过YAML配置入口
- 代码源选择你存储代码的Azure Git仓库,默认分支先选master即可,后续再配置多分支触发规则
- 构建阶段不需要任何编译操作,静态站点只需要添加两个任务:
- 添加「复制文件」任务:源文件夹选择仓库根目录,把所有HTML、CSS、JS、DevExtreme静态资源全部复制到
$(Build.ArtifactStagingDirectory)临时暂存目录 - 添加「发布构建工件」任务:将暂存目录内的所有文件发布为流水线工件,工件名设为
static-site,发布位置选择「Azure Pipelines」
- 添加「复制文件」任务:源文件夹选择仓库根目录,把所有HTML、CSS、JS、DevExtreme静态资源全部复制到
- 打开构建流水线的持续集成触发开关,将master、test两个分支都加入触发列表,只要这两个分支有新的代码提交,流水线就会自动启动构建
- 新建经典模式的发布流水线(Release Pipeline):
- 添加工件源,关联你刚才创建的构建流水线,打开持续部署触发器,构建完成后自动触发对应环境的发布
- 新建两个独立部署阶段,分别命名为「生产部署」「测试部署」
- 两个阶段的部署目标都选择你之前注册好的部署组下的本地Windows服务器
- 每个阶段只需要添加一个「IIS Web应用部署」任务,配置对应参数:
- 选择匹配的IIS站点:生产阶段选master分支对应的IIS站点,测试阶段选test分支对应的IIS站点
- 部署源路径选择之前发布的静态文件工件路径
- 勾选「覆盖已有文件」「部署完成后重启站点」选项,所有和.NET运行时、代码编译、web.config转换相关的配置项全部留空跳过即可,静态站点不需要这些参数
- 给两个部署阶段配置分支触发筛选:生产阶段设置为「仅当工件来源分支为master时触发」,测试阶段设置为「仅当工件来源分支为test时触发」,配置完成后两个分支的代码变更就会自动同步到对应独立站点,不会出现混部。
可选YAML配置参考
如果后续你想切换为YAML模式管理流水线,核心逻辑和经典模式完全一致:构建阶段只做静态文件复制、工件发布,发布阶段绑定部署组对应IIS站点即可,不需要添加任何dotnet相关的编译、还原任务,配置量比.NET项目少很多。
注意:你之前参考的.NET Core教程里的dotnet restore、dotnet publish、运行时安装这类任务全部不适用于静态站点,直接删掉这类任务就不会卡部署流程。DevExtreme组件属于前端静态资源,不需要服务端运行时支持,文件同步到IIS目录后就能正常加载运行。
内容的提问来源于stack exchange,提问作者Bulut Yüksel
相关产品推荐
相关产品推荐

