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

问题描述 投票:0回答:1

目前,我正在使用 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@2
任务设置
includeRootFolder: true
时,部署成功,但机器人没有运行。我相信这可能是由于额外文件夹导致的部署结构不正确。

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

azure azure-pipelines botframework ado
1个回答
0
投票

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

您可以添加一些步骤来检查 zip 文件中的内容。这是我的示例 yaml,通过添加脚本来列出文件夹

$(System.DefaultWorkingDirectory)
中的文件并将 zip 文件发布为管道工件。然后我们可以手动下载管道工件来检查文件。

    - 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'

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

© www.soinside.com 2019 - 2024. All rights reserved.