gpt4 book ai didi

azure-devops - 如果特定文件已更改,合并或构建会失败吗?

转载 作者:行者123 更新时间:2023-12-05 01:44:36 25 4
gpt4 key购买 nike

在 VSTS 上,我们有一些文件要在某些 分支上保护。如果特定文件已更改,合并/构建怎么会失败?

一等奖是在构建服务器上配置它,在本例中是 VisualStudio.com (VSTS/GIT)。

场景:我们有各种发布分支 v1、v2、v3。我们要保护 packages.json 文件以防止任何人在这些分支上更新 Nuget 包。因此,如果 package.json 文件根据拉取请求更改为“v3”,则不允许合并。

最佳答案

对于Git,您可以保护某个分支(不是某个文件),那么该分支中存在的所有文件都会受到保护。

您可以使用分支安全,用户/组可以为分支做出贡献。

或者您可以使用分支策略来保护不直接在分支上提交更改,而是使用拉取请求进行更改等。

或者您可以锁定一个分支以防止更新。

enter image description here


扩展 Starain 的答案:

首先为您要保护的分支创建构建定义(例如在获取源步骤中选择V3 分支)。并添加一个包含以下内容的 powershell 任务:

$head=$(git rev-parse HEAD)
$parents=$(git rev-list --parents -n 1 $head)
$p1,$p2,$p3=$parents.split(' ')
If ($p1 = $head)
{
$parent1=$p2
$parent2=$p3
}
ElseIf ($p2 = $head)
{
$parent1=$p1
$parent2=$p3
}
Else
{
$parent1=$p1
$parent2=$p2
}
$outp1=$(git diff $head $parent1 --name-only)
$outp2=$(git diff $head $parent2 --name-only)
If ($outp1 -contains 'package.json')
{
echo "changed the specified file on the branch which contains commit $parent1"
exit 1
}
If ($outp2 -contains 'package.json')
{
echo "changed the specified file on the branch which contains commit $parent2"
exit 1
}

因此,当文件 package.json 被更改时,powershell 脚本将无法生成结果。

然后为您要保护的分支添加分支策略

添加构建策略 -> 选择您刚刚创建的构建定义 -> 所需的策略要求 -> 构建过期 0.1 小时(6 分钟)或其他值,因为使用 powershell 任务对构建进行排队非常快 -> 保存。

关于azure-devops - 如果特定文件已更改,合并或构建会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45349682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com