我正在尝试构建一个 azure 管道来在拉取请求中 lint R 脚本,作为允许拉取请求获得批准和完成的步骤之一。
我可以让管道运行 R 并库我需要的一切,但我正在努力寻找一种方法来访问通过管道在拉取请求中更改的 R 脚本。
任何帮助将不胜感激。
答案 0 :(得分:1)
你可以通过 git 命令找到 PR 的变化文件。将其添加到 PR 验证构建中,作为 PR 到 master 分支的示例:
git diff --name-only --relative --diff-filter AMR origin/master --name-only -- . > $(Build.StagingDirectory)/repo_changes.txt
这是使用 PowerShell (PowerShell task) 仅复制更改文件的示例
$targetfolder = "$(Build.StagingDirectory)" + "/"
function CopyFiles{
param( [string]$source )
$target = $targetfolder + $source
New-Item -Force $target
copy-item $source $target -Force
}
$changes = git diff --name-only --relative --diff-filter AMR origin/master --name-only -- .
if ($changes -is [string]){ CopyFiles $changes }
else
{
if ($changes -is [array])
{
foreach ($change in $changes){ CopyFiles $change }
}
}
yaml 文件的部分可能是这样的:
jobs:
- job: get_changed_files
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$targetfolder = "$(Build.StagingDirectory)" + "/"
function CopyFiles{
param( [string]$source )
$target = $targetfolder + $source
New-Item -Force $target
copy-item $source $target -Force
}
$changes = git diff --name-only --relative --diff-filter AMR origin/master --name-only -- .
if ($changes -is [string]){ CopyFiles $changes }
else
{
if ($changes -is [array])
{
foreach ($change in $changes){ CopyFiles $change }
}
}
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.StagingDirectory)
artifactName: MyChangedFiles