如何保存Azure Pipeline命令行任务的日志输出并将其发布为工件
在Azure Pipeline中保存TabularEditor.exe的日志并发布为工件
我来帮你搞定这个需求,其实分两步就能实现:捕获命令行任务的日志输出到文件,然后把这个文件发布为Pipeline工件。具体操作如下:
步骤1:修改命令行任务,捕获所有日志输出
在你的命令行任务里,需要把TabularEditor.exe的标准输出(stdout)和错误输出(stderr)都重定向到一个文件里。推荐把文件放在$(Build.ArtifactStagingDirectory)目录下——这是Azure Pipeline专门预留的、用来存放待发布工件的临时目录,使用它能避免路径混乱的问题。
修改后的命令如下:
TabularEditor.exe "$(Build.SourcesDirectory)\MyModel" > $(Build.ArtifactStagingDirectory)\tabular_editor_logs.txt 2>&1
这里的参数解释:
>:将程序的标准输出写入指定的日志文件2>&1:将程序的错误输出(比如报错信息)也重定向到同一个日志文件,确保所有日志内容都被完整捕获
步骤2:添加发布工件任务,将日志文件发布
在命令行任务执行完成后,添加一个Publish Build Artifacts任务,把刚才生成的日志文件发布为Pipeline工件:
如果你用的是经典编辑器(可视化界面):
- 搜索并添加「Publish Build Artifacts」任务到Pipeline中,放在命令行任务的后面
- 在任务配置里:
- Path to publish:填写
$(Build.ArtifactStagingDirectory)\tabular_editor_logs.txt - Artifact name:设置一个清晰的名称,比如
TabularEditorLogs,方便后续查找 - Artifact publish location:选择「Azure Pipelines」(默认选项,日志会存在Azure Pipelines的工件库中)
- Path to publish:填写
如果你用的是YAML Pipeline:
在命令行任务的下方添加这段YAML代码:
- task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)\tabular_editor_logs.txt' ArtifactName: 'TabularEditorLogs' publishLocation: 'Container' # 对应经典编辑器的「Azure Pipelines」选项
完成这两步后,每次Pipeline运行时,TabularEditor.exe的所有日志都会被保存到文件,然后自动发布为工件。你可以在Pipeline运行完成后的「Artifacts」标签里找到这个日志文件。
内容的提问来源于stack exchange,提问作者Gayan Dasanayake
相关产品推荐
相关产品推荐

