Azure Devops - 仅在发生更改的文件夹中运行构建

标签 azure maven azure-devops devops

我有一些用 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'))

enter image description here

您可以检查this similar线程了解一些细节。

希望这有帮助。

关于Azure Devops - 仅在发生更改的文件夹中运行构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434011/

相关文章:

azure - 如何确定Azure中应用程序服务计划CPU百分比90%的原因?

azure - 将自定义属性添加到 WCF 中的 Application Insights 请求遥测

java - mvn依赖:tree return nothing but build success

java - maven:如何从主类中的测试类导入

java - 获取自 EJB 以来的 RESTful 列表

docker - 是否可以在 Azure DevOps Pipeline 中运行 GitHub Workflow Actions?

android - 使用 React Native 应用程序进行身份验证重定向 (Azure B2C)

python - 在 Azure 表存储中存储日期时间字段

azure - 在发布期间更新 Azure DevOps 发布管道变量

azure-devops - Azure DevOps yaml 管道表达式未评估