使用VSTS部署Azure网站时仅复制error.txt文件的问题求助
我之前也碰到过几乎一模一样的情况,大概率是发布任务配置或者CI构建输出环节出了问题,咱们一步步来排查解决:
先检查发布任务的文件路径配置
假设你用的是Azure App Service Deploy任务,首先得确认「Package or folder」这个字段是不是指向了正确的构建输出目录。很多人会不小心填成源码根目录,或者只匹配到了包含error.txt的路径。你可以打开任务配置,看看这个路径是不是类似$(System.DefaultWorkingDirectory)/**/*.zip(如果CI构建生成了压缩包的话),或者直接指向构建生成的完整输出文件夹。如果路径不对,就只会匹配到error.txt这种零散文件。验证CI构建的输出内容
去CI构建的「Artifacts」页面,下载构建生成的包或者文件夹,解压看看里面是不是包含了你所有修改的代码文件。如果构建输出里就没其他文件,那发布肯定同步不了。这时候要检查CI构建任务的配置:比如用DotNet Build或者MSBuild的话,是不是指定了正确的输出目录,有没有遗漏要构建的项目,或者是不是某个自定义脚本不小心只生成了error.txt。排查文件匹配/排除规则
看看发布任务里有没有设置文件排除规则,或者你的代码仓库里有没有.gitignore、.deployment这类文件排除了其他内容。比如如果.deployment文件里写了只包含error.txt的规则,那发布就只会同步这个文件。另外,Azure Web App默认的部署忽略规则不会只留error.txt,所以重点看你自己添加的排除配置。检查Web Deploy的行为设置
如果你用Web Deploy方式部署,要确认是不是开启了「Remove additional files at destination」选项。如果没开,Azure不会删除旧文件,但新文件应该还是会同步;如果开了但构建输出里没有其他文件,反而会把旧文件删掉只剩error.txt。另外,你可以勾选「Publish using Web Deploy」里的「Enable detailed logging」,然后看发布日志里有没有提到其他文件被跳过的具体原因。确认部署槽位(如果用了的话)
要是你用了Azure Web App的部署槽位,会不会是把代码部署到了staging槽,但没切换到production?这种情况下你访问的生产环境还是旧代码,看起来像是没同步。去Azure门户看看你的Web App部署槽位,确认发布的目标槽是不是你正在访问的那个。
一般来说,先从构建输出和发布任务的路径配置入手,这两个是最常见的问题,排查完应该就能解决啦。
内容的提问来源于stack exchange,提问作者m t

