本地Git部署至Azure App Service的路径与范围配置问题
Solution for Deploying Specific Directory to Target Path in Azure Web App via Local Git
针对你的需求,我们可以通过自定义部署脚本精准控制部署内容和目标路径,完美实现只推送Git仓库里的Templates目录到Web App的Site/Templates文件夹,同时忽略Custom code目录。下面是具体的实现步骤:
步骤1:创建部署配置文件
在你的Git仓库根目录下创建一个名为.deployment的文件,内容如下:
[config] command = deploy.cmd
这个文件会告诉Azure App Service:放弃默认部署流程,执行我们自定义的deploy.cmd脚本完成部署。
步骤2:编写自定义部署脚本
在Git仓库根目录创建deploy.cmd脚本,内容如下:
@echo off echo Starting custom deployment... :: 定义源路径(Git仓库里的Templates目录)和目标路径(Web App的Site/Templates) set SOURCE_DIR=%DEPLOYMENT_SOURCE%\Templates set TARGET_DIR=%DEPLOYMENT_TARGET%\Site\Templates :: 检查源目录是否存在,避免部署失败 if not exist "%SOURCE_DIR%" ( echo Error: Source directory %SOURCE_DIR% does not exist. exit /b 1 ) :: 自动创建目标目录(如果不存在) if not exist "%TARGET_DIR%" ( mkdir "%TARGET_DIR%" echo Created target directory %TARGET_DIR% ) :: 复制Templates目录下的所有内容到目标路径(覆盖已存在的文件) xcopy "%SOURCE_DIR%\*" "%TARGET_DIR%\" /E /Y /I echo Successfully copied Templates content to %TARGET_DIR% echo Deployment completed successfully!
这个脚本的核心逻辑:
- 借助Azure提供的环境变量
%DEPLOYMENT_SOURCE%(指向推送的Git代码目录)和%DEPLOYMENT_TARGET%(指向Web App根目录)定位路径 - 只处理
Templates目录,完全跳过Custom code - 自动创建目标目录,避免因目录缺失导致的部署错误
步骤3:提交并推送配置文件和脚本
把.deployment和deploy.cmd添加到Git仓库并提交:
git add .deployment deploy.cmd git commit -m "Add custom deployment script to deploy Templates to Site/Templates"
然后像往常一样推送到Azure的Git远程仓库:
git push azure main
额外说明
- 如果你的Web App是Linux环境,需要把
deploy.cmd换成deploy.sh(Shell脚本),逻辑类似,命令替换为Linux的mkdir和cp即可 - 若想彻底避免
Custom code被Git追踪,可在.gitignore中添加Custom code/,不过上述脚本已经不会处理该目录,这一步可选 - 部署过程中可以在Azure Portal的Web App「部署中心」查看日志,确认脚本执行情况
这样配置后,每次推送Git代码时,Azure只会把你仓库里的Templates目录部署到Web App的Site/Templates路径,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Martin at Mennt
相关产品推荐
相关产品推荐

