获取触发管道的当前路径 (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循环输出被修改文件名的列表和路径: