【问题标题】:Azure Pipelines Get Latest files onlyAzure Pipelines 仅获取最新文件
【发布时间】:2020-06-16 13:28:45
【问题描述】:

我正在寻找一种方法来创建可以附加到部署管道的工件,该管道仅包含在触发此构建的提交中更改的文件。

我拥有的是一个包含数据库对象更改脚本的存储库,因此我只想将上次提交的更改脚本打包到一个 zip 文件中,并将其附加到构建输出中。这样我就可以获取 zip 文件并将每个文件应用到数据库之上,这将在稍后的不同步骤中完成,现在我只是试图获取所有已更改的文件。

已编辑 我根据下面的 cmets 在 YAML 文件中创建了以下步骤

- powershell: |
   #get the changed template
   echo "git diff-tree --no-commit-id --name-only -r $(Build.SourceVersion)"
   $a = git diff-tree --no-commit-id --name-only -r $(Build.SourceVersion)  

   #assign the filename to a variable        
   echo "Files"
   echo "##vso[task.setvariable variable=fileName]$a" 
- powershell: |
   #Print Files
   $fileName: echo "$env:fileName"

下面是结果,你可以看到没有文件被改变。在这里,我更改了触发构建的自述文件。

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    不确定这是否会对您有所帮助,但希望能指明正确的方向。

    假设您将 Git 作为源代码控制。您是否考虑过使用 Git 来查询这些更改? (我没有尝试过,但我敢打赌,您将能够在管道元数据中找到合并触发构建,然后使用它来查询 Git 以了解文件更改。

    Have a look at this question in Stackoverflow

    希望它会有所帮助。

    【讨论】:

      【解决方案2】:

      如果您使用 Git 版本控制,您可以尝试添加脚本任务以获取管道中更改的文件名,将它们复制到工件目录,然后发布它们。

      使用 git 命令git diff-tree --no-commit-id --name-only -r commitId 很容易获取更改的文件。当您获得更改后的文件名时,您需要使用表达式##vso[task.setvariable variable=VariableName]valueassign it to a variable。然后你可以在复制和发布任务中使用这个变量。

      您可以检查以下 yaml 管道,例如:

          - powershell: |
             #get the changed template
             $a = git diff-tree --no-commit-id --name-only -r $(Build.SourceVersion)  
             
             #assign the filename to a variable        
             echo "##vso[task.setvariable variable=fileName]$a" 
      
          - powershell: |
             echo "$env:fileName"
      

      【讨论】:

      • 我在 YAML 中使用了上述脚本,但它从不回显任何文件名。它只是回显一个空行。
      • 这个日志记录命令在taskcontext的变量服务中设置了一个变量。第一个任务可以设置一个变量,同阶段的后续任务都可以使用该变量。您可以添加另一个 PS 任务来打印 $fileName: echo "$env:fileName"
      • 你能打印$filename吗?
      • 抱歉,我对 YAML 和 PowerShell 不太熟悉。如果我把 $fileName: echo "$env:fileName" 放在那里,那么它的错误变量引用无效。 “:”后面没有有效的变量名字符。
      • 您需要添加以下 PS 任务来打印变量。检查我的更新回复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多