获取触发管道的当前路径 (Yaml)
Get current path to -what- triggered the pipeline (Yaml)
我已尝试在此处回显/调试大部分变量 https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml,但其中 none 显示了触发管道的原因。
如果 MyDir
是具有 n
个包含文件的子目录的目录树,我想知道哪个文件实际触发了我的管道(文件路径)
trigger:
paths:
include:
- MyDir/*
我用的是Git,我也试过Git log
但是
git diff HEAD HEAD~ --name-only
似乎产生了一些不错的结果。
有什么想法吗?
更新
我最终做了一个 Bash 脚本来遍历当前提交中的文件。我在后面的步骤中需要它们
But if two commits happens at the same time I still don't know what actually triggered my pipeline.
不清楚您是如何同时实现两个提交的。
您可以使用以下任务和 Git 命令来列出更改文件:
- powershell: |
## get the changed files
$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
$files | ForEach-Object {
echo $_
}
如果启用CI,每次提交都会启动一个单独的构建,然后我们会在每个构建中获取修改后的文件名和路径。
如果在本地提交commit,每次commit包含多个被修改的文件,我们可以使用ForEach循环输出被修改文件名的列表和路径:
我已尝试在此处回显/调试大部分变量 https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml,但其中 none 显示了触发管道的原因。
如果 MyDir
是具有 n
个包含文件的子目录的目录树,我想知道哪个文件实际触发了我的管道(文件路径)
trigger:
paths:
include:
- MyDir/*
我用的是Git,我也试过Git log
但是
git diff HEAD HEAD~ --name-only
似乎产生了一些不错的结果。
有什么想法吗?
更新 我最终做了一个 Bash 脚本来遍历当前提交中的文件。我在后面的步骤中需要它们
But if two commits happens at the same time I still don't know what actually triggered my pipeline.
不清楚您是如何同时实现两个提交的。
您可以使用以下任务和 Git 命令来列出更改文件:
- powershell: |
## get the changed files
$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
$files | ForEach-Object {
echo $_
}
如果启用CI,每次提交都会启动一个单独的构建,然后我们会在每个构建中获取修改后的文件名和路径。
如果在本地提交commit,每次commit包含多个被修改的文件,我们可以使用ForEach循环输出被修改文件名的列表和路径: