如何在DevOps流水线中将Azure CLI输出保存至仓库指定文件夹?
Azure DevOps流水线中把Azure CLI输出存到仓库目标文件夹的方法
关键前提
流水线执行时,你的仓库代码会被自动检出到代理机器的$(Build.SourcesDirectory)路径下,这个是DevOps自带的预定义变量,直接用它就能定位到仓库根目录。
具体操作
1. 确定仓库内的目标路径
比如你想把输出存到仓库里的outputs/cli-logs文件夹,先确认这个文件夹要么已经在仓库里,要么提前在流水线里创建。
2. 用Out-File指定完整路径
在Azure CLI的PowerShell任务里,直接结合预定义变量写路径:
az your-cli-command-here | Out-File -FilePath "$(Build.SourcesDirectory)/outputs/cli-logs/az-result.txt" -Encoding utf8
这里的*$(Build.SourcesDirectory)*会自动替换成仓库在代理机器上的实际路径,后面拼上你仓库里的子文件夹和文件名就搞定了。
3. (可选)提前创建目标文件夹
如果仓库里没预先建这个文件夹,就在CLI任务前面加个PowerShell任务创建:
New-Item -ItemType Directory -Path "$(Build.SourcesDirectory)/outputs/cli-logs" -Force
要是用Bash任务的话就写:
mkdir -p $(Build.SourcesDirectory)/outputs/cli-logs
4. (可选)把文件推回仓库
如果要把生成的输出文件提交回仓库,加个Git操作的任务:
cd $(Build.SourcesDirectory) git config --global user.name "DevOps Pipeline Bot" git config --global user.email "pipeline@yourdomain.com" git add outputs/cli-logs/az-result.txt git commit -m "Update Azure CLI output from pipeline run $(Build.BuildId)" git push origin $(Build.SourceBranchName)
注意:得确保流水线用的服务账号有仓库的推送权限,不然会报错。
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

