gpt4 book ai didi

azure-devops - 在舞台上添加条件以检查文件夹的变化

转载 作者:行者123 更新时间:2023-12-04 08:40:53 25 4
gpt4 key购买 nike

我在同一个分支中有服务器端(使用 c# 的 web api)和客户端(角度)代码。我为服务器端和客户端代码创建了单独的阶段来构建,还有一个阶段来部署。如果我在客户端或服务器端 checkin 代码,则所有 3 个阶段都会运行。为了避免这种情况,我正在寻找在阶段级别添加条件的方法,以便如果有服务器端更改,则只有服务器阶段将运行,如果 checkin 的代码只有客户端代码,则只有客户端阶段将运行。我不明白如何检查 checkin 了哪些文件。我在搜索时发现了类似的问题,但解决方案是使用 git 给出的。我在 azure-repos 中有我的代码。有什么方法可以让我根据文件夹检查是否有更改,并在阶段中的条件下进一步使用它。像这样的东西:

stages: 
- stage: 'Server'
condition:

- stage: 'Client'
condition:
提前致谢。

最佳答案

this thread中提到的解决方案应该为你工作。我将分享有关此解决方法的更多详细信息。
1、添加另一个阶段ChangedFolders在 stage Server 之上,在 stage ChangedFolders 中,添加具有单个 powershell 任务的单个作业。 (您不需要为服务器文件夹和客户端文件夹创建变量。)
2、在powershell任务中,运行上面线程中提到的脚本。并通过脚本设置输出变量。见文档here想要查询更多的信息。
见下面的例子:

stages: 
- stage: ChangedFolders
jobs:
- job: preCheck
steps:
- powershell: |
$files=$(git diff HEAD HEAD~ --name-only)
$temp=$files -split ' '
$count=$temp.Length
echo "Total changed $count files"
For ($i=0; $i -lt $temp.Length; $i++)
{
$name=$temp[$i]
echo "this is $name file"
if ($name -like 'ServerFolder/*') #if ServerFolder is a subfolder under a folder use "- like '*/ServerFolder/*'"
{
Write-Host "##vso[task.setvariable variable=severFolder;isOutput=true]True"
}
if ($name -like 'ClientFolder/*')
{
Write-Host "##vso[task.setvariable variable=clientFolder;isOutput=true]True"
}
}
name: taskVariable

- stage: 'Server'
condition:

- stage: 'Client'
condition:
3,然后你可以为sever和client阶段添加依赖和条件。见文档 here .检查以下 yaml 示例:
在条件中引用输出变量的格式是这样的: dependencies.dependOnStageName.outputs['jobName.taskName.variableName']
- stage: ChangedFolders
jobs:
- job: preCheck
steps:
- powershell: |
...
name: taskVariable

- stage: 'Server'
dependsOn: preCheck
condition: eq(dependencies.ChangedFolders.outputs['preCheck.taskVariable.serverFolder'], 'True')

- stage: 'Client'
dependsOn: preCheck
condition: eq(dependencies.ChangedFolders.outputs['preCheck.taskVariable.clientFolder'], 'True')
请让我知道,如果你有任何问题。

关于azure-devops - 在舞台上添加条件以检查文件夹的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64573026/

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