Azure devops 如何使用Devops CI/CD管道和ARM模板在Azure Portal中创建资源

Azure devops 如何使用Devops CI/CD管道和ARM模板在Azure Portal中创建资源,azure-devops,continuous-integration,botframework,azure-powershell,arm-template,Azure Devops,Continuous Integration,Botframework,Azure Powershell,Arm Template,我正在创建基于qnamaker的聊天机器人,为此我准备了用于创建和部署资源的ARM模板 PowerShell脚本用于在创建所有资源后创建知识库 当我从本地PowerShell工具执行PowerShell脚本时,此过程工作正常 现在我想为这个部署过程执行CI/CD,这样部署过程就可以自动化了 通过azure ARM模板部署任务创建资源并通过管道部署到azure是完全可能的,但我不确定如何执行PowerShell脚本,该脚本在基于最近创建的qnamaker服务创建资源后负责创建知识库 非常感谢您提供

我正在创建基于qnamaker的聊天机器人,为此我准备了用于创建和部署资源的ARM模板

PowerShell脚本用于在创建所有资源后创建知识库

当我从本地PowerShell工具执行PowerShell脚本时,此过程工作正常

现在我想为这个部署过程执行CI/CD,这样部署过程就可以自动化了

通过azure ARM模板部署任务创建资源并通过管道部署到azure是完全可能的,但我不确定如何执行PowerShell脚本,该脚本在基于最近创建的qnamaker服务创建资源后负责创建知识库

非常感谢您提供的任何帮助

您可以参考逐步实验室来创建管道


如果您需要有关ARM模板的帮助(如果您被困在某个地方),您可以查看并快速开始。

请澄清您的问题是在ARM创建实际资源后创建和培训QnA Maker KB?可能有多种方法可以做到这一点,但以下是我所做的。首先,我使用Azure CLI任务版本2.*简化了一些初始步骤。您可能会在后续的一些步骤中使用常规PowerShell。我已选择所有作为PowerShell脚本类型和内联脚本。每一部分我都是作为一个单独的任务来完成的,但是你可能可以作为一个整体来完成。不过,我喜欢看到如果发生了什么事情,哪一步会失败

首先,你需要获得认知服务的钥匙

$QNAKEY= & az cognitiveservices account keys list -g "YOUR_RESOURCE_GROUP" --name "YOUR_QNA_RESOURCE_NAME" --query key1 -o tsv
Write-Output("##vso[task.setvariable variable=QNA_KEY;]$QNAKEY")
接下来需要创建知识库。我已经通过我的项目存储库中的json文件为我的项目添加了信息种子。您可以在任何地方执行此操作,或者只创建一个空白KB(我认为)。注意,我在这里检查知识库是否存在;KB名称不必是唯一的,因此如果不这样做,您将最终创建大量重复的KB

$header = @{
  "Content-Type"="application/json"
  "Ocp-Apim-Subscription-Key"="$(QNA_KEY)"
}

$res = Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases" -Method 'Get' -Headers $header

$kb = $res.knowledgebases | Where-Object name -eq "YOUR_KB_NAME"

Write-Host $res.knowledgebases
Write-Host $kb

if (!$kb) {
    Write-Host "KB does not exist, so creating new KB"
    $body = Get-Content '$(System.DefaultWorkingDirectory)/PATH_TO_MY_MODEL.json' | Out-String
    Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/create" -Method 'Post' -Body $body -Headers $header
}
最后,您可能希望发布知识库。对于LUIS,我认为您需要首先进行培训(通过单独的CLI任务),但QnA Maker应该可以直接发布。我将此作为一个从属阶段来执行,以确保在尝试发布之前创建知识库

$QNAKEY= & az cognitiveservices account keys list -g "YOUR_RESOURCE_GROUP" --name "YOUR_QNA_RESOURCE_NAME" --query key1 -o tsv

$header = @{
  "Content-Type"="application/json"
  "Ocp-Apim-Subscription-Key"="$QNAKEY"
}

$res = Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases" -Method 'Get' -Headers $header

$kb = $res.knowledgebases | Where-Object name -eq "YOUR_KB_NAME"
$qnaId = $kb.id

Invoke-RestMethod -Uri "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/$qnaId" -Method 'Post' -Headers $header

就这样!此时,您的QnA Maker知识库应该已经创建、发布并准备就绪。

您好,singhh msft,谢谢您的快速回复我已经更新了我的问题,因为我想我忘记了一些事情,真正的痛苦是通过ARM创建基础设施,然后使用powershell脚本基于最近创建的认知服务创建Knwolegebase。@SujeetKulkarni这有点痛苦,但一旦将其构建到管道中,这应该不是什么大问题。你有没有检查过我提供的附加答案,看看它是否满足你的需要?你好,比洛弗顿,是的,你是对的,我正在把一切都分解成碎片。谢谢。这个回答有用吗?无论哪种回答有助于您解决问题,请将其标记为帮助社区的回答嗨,问题如何?下面的答案解决了你的问题吗?如果没有,你能告诉我关于这个问题的最新信息吗?