如何使用zip文件和ARM模板将bot框架应用程序部署为天蓝色?

问题描述

我们正在尝试通过使用REST API进行的ARM部署,将预先构建的机器人人工产品部署到租户中。鉴于所有文档都使用az cli,因此我们正在努力从vs代码/可视化工作室复制基于GUI的部署的操作。手动部署最终会导致一个包含顶层dll的应用程序,而我们当前的路线并不包括内置的dll。

我们生产机器人工件的管道是:

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: AzureCLI@2
  inputs:
    azureSubscription: 'GoSmarter Azure Service Connection'
    scriptType: 'ps'
    scriptLocation: 'scriptPath'
    scriptPath: 'az-Prepare.ps1'

其中az-Prepare.ps1包含az bot prepare-deploy --lang Csharp --code-dir $codeDirectory --proj-file-path $projectFileName来生成bot应用程序的zip,以便我们可以将其放入blob存储中以供ARM模板使用。

然后,作为更大的设置步骤的一部分,我们使用MSDeploy ARM资源来部署此zip文件。

    {
      "name": "MSDeploy","type": "extensions","location": "[variables('resourcesLocation')]","apiVersion": "2015-08-01","dependsOn": [
        "[resourceId('Microsoft.Web/sites',variables('webAppName'))]"
      ],"tags": {
        "displayName": "deployArchive"
      },"properties": {
        "packageUri": "[concat(variables('source'),'qnabotarchive.zip',parameters('SasToken'))]","dbType": "None","connectionString": ""
      }
    }

我们尝试将用于触发生成的Kudu应用设置设置为true,但这似乎不适用于MSDeploy提供的zip,因此不会升级dll。

        {
          "name": "SCM_DO_BUILD_DURING_DEPLOYMENT","value": "true"
        }

有人知道正确的方法是为机器人部署配置构建,应用和/或ARM模板以提供顶级dll的正确方法吗?

解决方法

最后,我们选择使用dotnet core命令来构建bot解决方案。

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '$(project)'
    arguments: '--configuration $(BuildConfiguration) -p:langversion=latest'
  displayName: "Build solution"

- task: DotNetCoreCLI@2
  displayName: "Publish Build Output"
  inputs:
    command: 'publish'
    publishWebProjects: true
    arguments: '--configuration $(BuildConfiguration) -p:langversion=latest --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: false

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/QnABot/*'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/Chatbots/qnabotarchive.zip'
    replaceExistingArchive: true

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...