首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不需要重新构建、测试、重新部署管道中的所有服务的PR触发器。

不需要重新构建、测试、重新部署管道中的所有服务的PR触发器。
EN

Stack Overflow用户
提问于 2021-02-28 22:34:34
回答 1查看 86关注 0票数 0

我的monorepo是这样的结构,其中子目录要么是"microservices“,要么是资源:

代码语言:javascript
复制
/app
  /admin
  /admin-v2
  /api
  /api-v2
  /client
  /k8s
  /postgres
  /scripts
  azure-pipelines.yaml
  skaffold.yaml

我确实有一部份的谜题。我知道以下命令将告诉我哪些"microservices“受到了与此PR相关的提交的影响:

代码语言:javascript
复制
$ git diff --name-only $COMMIT_ID | awk -F'/' 'NF!=1{print $1}' | sort -u
admin-v2
api-v2
client
postgres

我知道在我的管道中的每一个阶段都将对应于其中的一个“微服务”,我需要在每个阶段中使用前面的命令来查看这个阶段是否在那里。如果是的话,它需要运行。如果没有,这个舞台就可以被忽略。

我的最终目标是让开发人员与他们短暂的分支进行远程连接,打开一个PR以合并到主干中,当PR打开时,它会触发CI管道来构建"microservice“、运行单元和集成测试,只在它们的PR中的"microservices”上运行,而不是每次都重建所有的东西。

想要在一个azure-pipelines.yaml上完成它。另一种方法是在每个子目录中设置一个子目录,并为每个子目录设置单独的管道,这可能会带来麻烦。

关于如何实施这一点的建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 07:41:06

不需要重新构建、测试、重新部署管道中的所有服务的PR触发器。

PR触发器与Azure Repos Git中的CI触发器不同。因为:

在Azure Repos Git中,此功能是使用分支策略实现的。要在Azure Git Repos中启用拉请求验证,请导航到所需分支的分支策略,并为该分支配置构建验证策略。有关更多信息,请参见配置分支策略

因此,Azure DevOps仍然不支持YAML中的PR触发器,我们不能将该条件直接用于构建、测试和部署,例如:

代码语言:javascript
复制
condition: contains(variables['Build.SourceBranch'], 'refs/heads/staging')

我们必须在构建、测试、部署中添加powershell任务,以确定哪些“微服务”受到与PR关联的提交的影响,例如:

代码语言:javascript
复制
$editedFiles = git diff HEAD HEAD~ --name-only
echo "$($editedFiles.Length) files modified:"
$editedFiles | ForEach-Object {
   echo $_
    Switch -Wildcard ($_ ) {
        'app/admin-v2/*' { 
              # If the admin-v2 is updated, we need to generate the variable Enable_Admin-v2
              Write-Output "##vso[task.setvariable variable=Enable_Admin-v2]True" 
         }        
        'app/api-v2/*' { Write-Output "##vso[task.setvariable variable=api-v2]True"  }
        # The rest of your path filters
    }
}

此脚本设置变量,然后在构建、测试、部署管道的下一步的自定义条件中引用这些变量:

代码语言:javascript
复制
and(succeeded(), eq(variables['Enable_Admin-v2'], 'True'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66414540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档