Azure DevOps 安全扫描作为构建和拉取请求的一部分,仅针对增量更改

问题描述

我们正在尝试构建一个 Azure Devops 管道(基于 yaml 的管道),其中构建是在拉取请求上触发的,但我们想要做的是我们只想在增量上执行一个步骤(通过 veracode 扩展进行安全扫描)更改即假设我有版本为“X”的基本代码,我对其进行了很少的更改(修改几个文件添加几个文件等),现在每当我执行拉取请求时,我都希望触发构建,但是作为构建的一部分,安全扫描步骤应该只对增量更改而不是构建的整个代码库执行。我不确定我们如何作为 YAML 管道(步骤)的一部分来实现这一点,其中一些过滤器值会自动应用(可能是一些 REST API 以在该构建中获得增量更改),因此该步骤仅在那些更改的文件上执行。

我已经尝试使用以下脚本的 git diff HEAD 命令只是为了输出上次构建的更改,但这并没有给我任何回报

steps:
    - task: AzurePowerShell@5
      displayName: 'Check changed files'
      inputs:
        azureSubscription:  'mysubscription'
        scriptType: 'Inlinescript'
        Inline: |
          $url = "https://dev.azure.com/xxxx/KKKK/_apis/build/latest/2083?apir-version=6.0-preview.1&branchName=myevbrnch"
          $response = (Invoke-RestMethod -Uri $url -Method GET -Headers $AzureDevOpsAuthenicationHeader)
          $files = (git diff HEAD $response.sourceVersion --name-only)
          $temp=$files -split ' '
          $count=$temp.Length
          echo "Total changed $count files"
          For ($i=0; $i -lt $temp.Length; $i++)
          {
            $name=$temp[$i]
            echo "this is $name file"
            if ($name -like "SecopsTest/*")
              {
                Write-Host "##vso[task.setvariable variable=MicroserviceAUpdated]True"
              }
          }
        azurePowerShellVersion: 'latestVersion'
        pwsh: true

对我们如何通过 YAML 管道实现这一目标有任何帮助吗?

谢谢

解决方法

我能够获得上次构建和当前更改之间的差异,我必须在构建上启用标记,启用后我引入了以下 powershell 脚本来检查构建之间的更改(发现此标记比较代码编写来自Shamrai Alexander

No module named 'module'