提问人:tonymontana 提问时间:10/19/2023 最后编辑:tonymontana 更新时间:10/20/2023 访问量:85
使用 ADO 管道而不是 az webapp deployent 部署 MS 机器人
Deploying a MS bot with ADO pipeline instead of az webapp deployent
问:
目前,我正在使用 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
我走在正确的轨道上吗?有没有更好的方法来实现这种部署?
答:
1赞
Miao Tian-MSFT
10/19/2023
#1
如果可以使用 Azure CLI 成功部署应用,请尝试检查在管道中部署的 zip 文件是否与使用 Azure CLI 部署的 zip 文件相同。
您可以添加一些步骤来检查 zip 文件中的内容。这是我的示例 yaml,通过添加脚本以列出文件夹中的文件并将 zip 文件发布为管道工件。然后,我们可以查看管道日志中存档的内容,并手动下载管道工件以检查文件。$(System.DefaultWorkingDirectory)
- 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
评论