我有一些用 scala 编写并使用 Maven 构建的 Spark 作业。 现在遵循这样的路径
/src/job1/<<build data>>
/src/job2/<<build data>>
.....
此构建数据包含代码、pom.xml、测试和其他传递到 Maven 的作业所需的内容。
我们有一个根文件夹,其中有一个构建所有代码的父 pom.xml,但我不想每次都构建所有代码。我希望能够仅测试和构建发生更改的作业的代码。
我认为唯一可能的方法是仅在检测到更改的文件夹中运行构建测试,但如果不为每个文件夹创建一个 azure devops 构建,我似乎无法做到这一点,有什么想法吗?
TL:DR - 如何将 azure devops 中发生更改的文件夹路径传递到构建过程?
最佳答案
How to pass the path of folder that have changes in azure devops to the build process?
我们可以添加 powershell 脚本来检查文件夹或路径,例如:
$editedFiles = git diff HEAD HEAD~ --name-only
echo "$($editedFiles.Length) files modified:"
$editedFiles | ForEach-Object {
echo $_
Switch -Wildcard ($_ ) {
'/src/job1' {
Write-Output "##vso[task.setvariable variable=job1]True"
}
'/src/job2' {
Write-Output "##vso[task.setvariable variable=job2]True" }
}
}
此脚本设置变量,然后在管道构建任务或构建管道中的自定义条件中引用这些变量:
and(succeeded(), eq(variables['job1'], 'True'))
您可以检查this similar线程了解一些细节。
希望这有帮助。
关于Azure Devops - 仅在发生更改的文件夹中运行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434011/