我们有一个 NX monorepo,里面有多个项目,并且正在使用 nx受影响来确定哪些项目已被触及。这对于我们的构建管道非常有效,但我们希望仅在项目实际发生更改时才发布它们。我们希望每个项目都有多个发布管道,只有在实际接触时才会触发。
经过调查,我们得出的结论是,确实有可能!我们选择的路径是设置构建标签。请注意,这些与 git 标签不同(!)。
我们需要做的第一件事是确定哪些项目发生了更改,并用这些项目标记构建。我们通过利用 bash、nx 和 jq 来提供逗号分隔的列表来做到这一点。我们已将以下任务添加到构建管道中:
- script: |
projects=`npx nx show projects --affected --json --base=$(BASE_SHA) --head=$(HEAD_SHA) | jq -r '.|@csv' | tr -d '"'`
echo "Touched projects:"
echo $projects
for project in ${projects//,/ }
do
echo "##vso[build.addbuildtag]$project"
echo "Creating tag for: $project"
done
displayName: 'Tag build'
这样我们的构建就会被标记,并且我们可以在发布管道中定义构建标签过滤器。这可以通过在发布部分和工件下编辑管道来完成,单击照明图标,然后在构建分支过滤器下,您可以定义分支+构建标签:
通过这样做,只有当特定标签存在时才会触发发布分支。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)