使用 ADO 管道而不是 az webapp deployent 部署 MS 机器人

Deploying a MS bot with ADO pipeline instead of az webapp deployent

提问人:tonymontana 提问时间:10/19/2023 最后编辑:tonymontana 更新时间:10/20/2023 访问量:85

问:

目前,我正在使用 az CLI 通过以下命令将机器人部署到 Azure:

az webapp deployment source config-zip --resource-group MY_RESOURCE_GROUP --name MY_RESOURCE_NAME --src MY_BOT_ZIP

我正在尝试从Azure DevOps管道部署机器人。这是我尝试过的:

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

- task: AzureWebApp@1
  inputs:
    azureSubscription: MY_SUBSCRIPTION
    appType: webAppLinux
    appName: MY_RESOUCE_NAME
    package: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'

但是,这会导致部署失败,并出现以下错误:

Error: ENOENT: no such file or directory, stat '/home/site/wwwroot/node_modules/.bin/bunyan'
An error has occurred during web site deployment.
Kudu Sync failed
\n/opt/Kudu/Scripts/starter.sh "/home/site/deployments/tools/deploy.sh"
Deployment Failed. deployer = VSTS_ZIP_DEPLOY deploymentPath = ZipDeploy. Extract zip.
##[error]Failed to deploy web package to App Service.
##[warning]Can't find loc string for key: KuduStackTraceURL
##[error]KuduStackTraceURL https://...
##[error]Error: Package deployment using ZIP Deploy failed. Refer logs for more details.

当我将任务修改为设置时,部署成功,但机器人没有运行。我相信这可能是由于额外的文件夹导致的部署结构不正确。ArchiveFiles@2includeRootFolder: true

我走在正确的轨道上吗?有没有更好的方法来实现这种部署?

azure-pipelines botframework

评论


答:

1赞 Miao Tian-MSFT 10/19/2023 #1

如果可以使用 Azure CLI 成功部署应用,请尝试检查在管道中部署的 zip 文件是否与使用 Azure CLI 部署的 zip 文件相同。

您可以添加一些步骤来检查 zip 文件中的内容。这是我的示例 yaml,通过添加脚本以列出文件夹中的文件并将 zip 文件发布为管道工件。然后,我们可以查看管道日志中存档的内容,并手动下载管道工件以检查文件。$(System.DefaultWorkingDirectory)enter image description here

    - script: ls $(System.DefaultWorkingDirectory)

    - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
        includeRootFolder: false
        archiveType: 'zip'
        archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
        replaceExistingArchive: true

    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
        artifact: 'WebApp'
        publishLocation: 'pipeline'

    - task: AzureWebApp@1
      inputs:
        azureSubscription: 'MY_SUBSCRIPTION'
        appType: 'webApp'
        appName: 'MytestApp'
        package: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
        deploymentMethod: 'auto'

顺便说一句,还可以将管道中的 Azure CLI 任务与命令一起使用,而不是任务。AzureWebApp@1

- task: AzureCLI@2
  inputs:
    azureSubscription: 'MY_SUBSCRIPTION'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: 'az webapp deployment source config-zip --resource-group MY_RESOURCE_GROUP --name MY_RESOURCE_NAME --src MY_BOT_ZIP'

希望以上内容能帮助您解决问题。

评论

0赞 tonymontana 10/19/2023
不幸的是,管道显示“0 已发布”项目,因此我无法检查项目的内容。
1赞 Miao Tian-MSFT 10/20/2023
您是否在 yaml 中添加了任务?PublishPipelineArtifact@1