如何编辑并重新运行VSTS中失败的EF Migrations构建阶段?
如何在VSTS(Azure DevOps)中保留前序构建产物,仅重新运行EF Migrations阶段
当然可以做到!你不用每次都重新跑前5个耗时6分钟的阶段,只要利用Azure DevOps的构件管理和阶段重跑功能就能解决问题,具体步骤如下:
第一步:给前5个阶段的产物打包发布
在第5个阶段(发布符号路径)的最后,添加一个「发布构件(Publish Build Artifacts)」任务:- 把要发布的路径设置为你的项目输出目录(比如
$(Build.ArtifactStagingDirectory)或者$(SolutionDir)/YourProject/bin/Release,根据你的实际结构调整) - 给这个构件起个好记的名字,比如
MigrationRequiredFiles - 发布位置选择「Azure Pipelines」,这样构件会存在于当前构建的历史记录里
- 把要发布的路径设置为你的项目输出目录(比如
第二步:让第6阶段依赖并下载构件
在第6个EF Migrations阶段的最开头,添加一个「下载构件(Download Build Artifacts)」任务:- 选择刚才发布的
MigrationRequiredFiles构件 - 设置下载路径为当前工作目录(或者你需要的路径,确保EF命令能找到对应的DLL)
同时确认第6阶段的依赖关系是「只有当前5个阶段全部成功才运行」(默认就是这个逻辑,不用额外改,但可以检查一下阶段的依赖设置)
- 选择刚才发布的
第三步:单独重新运行第6阶段
当第6阶段失败后,你不用重新跑整个构建:- 进入构建历史页面,找到那次前5阶段成功、第6阶段失败的构建记录
- 点击「重新运行」按钮,在弹出的选项里选择「选择要运行的阶段」
- 只勾选第6个EF Migrations阶段,确认运行就行
这样系统会自动从之前的构建里下载你发布的构件(也就是前5阶段生成的DLL等文件),然后单独执行第6阶段的命令,完全不用重新跑前面的步骤。
另外提个小建议:如果你的EF Migrations命令需要特定的配置文件或者环境变量,记得要么把配置文件也包含在发布的构件里,要么在第6阶段单独配置这些变量,避免因为缺少配置导致新的失败。
内容的提问来源于stack exchange,提问作者tomRedox
相关产品推荐
相关产品推荐

