我正尝试将Dotnet核心Azure功能上载到Windows上托管的应用程序服务,而我正努力证明其有效或确保设置正确。
我也希望部署应该完全自动化,而不必通过Azure门户和调整设置等。
构建过程:目前看起来像这样...
因此,此时一切都很好。
发布过程
应用设置(请参见下面的屏幕截图)
结果
该版本通过了,它在日志中表示已上传了软件包和应用程序设置。
但是,当我转到Azure门户时:
问题
与帮助文档通常一样,我所看到的信息遵循的是一条快乐的路,或者有时包含过多的if,buts甚至是建议。
任何指导都将是不胜感激的,因为我觉得我在这里转来转去,应该很简单。
谢谢。
答案 0 :(得分:0)
您可以通过Azure-Resource-Manager Templates部署Azure功能。您可以在GitHub上找到示例。通过此步骤,您可以在部署之前在Azure上创建所需的基础结构。对于您的情况,Azure功能和消耗计划。因此,在您的部署中,将在第一步中提供基础结构,然后在实际功能中将程序包进行部署。
有关基础结构,请查看Create or Update Resource Groups的Azure DevOps步骤。
两个步骤的YAML示例:
- task: AzureResourceGroupDeployment@2
displayName: 'Create Or Update Resource Group'
inputs:
deploymentMode: 'Incremental'
azureSubscription: 'Your-Subscription'
resourceGroupName: '${{ parameters.resourceGroupName }}'
location: '${{ parameters.location }}'
csmFile: '${{ parameters.csmFile }}'
csmParametersFile: '${{ parameters.csmParametersFile }}'
- task: AzureRmWebAppDeployment@4
displayName: 'Azure App Service Deploy'
inputs:
azureSubscription: 'Your-Subscription'
appType: functionApp
WebAppName: '${{ parameters.function }}'
packageForLinux: '$(Agent.BuildDirectory)/${{ parameters.dropfolder }}/$(Build.Repository.Name)-$(version)-$(Build.SourceBranchName)-$(Build.BuildNumber).zip'
答案 1 :(得分:0)
在Azure Devops管道中完成构建后,您将创建一个用于发布的程序包。您必须确保该软件包中的内容与正确的文件夹结构匹配。根据{{3}},您应用的内容应具有以下结构。
FunctionApp
| - host.json
| - MyFirstFunction
| | - function.json
| | - ...
| - MySecondFunction
| | - function.json
| | - ...
| - SharedCode
| - bin
构建后,您可以通过转到特定构建的摘要并单击已发布的工件来检查生成的包的内容。您可以在那里下载内容并确保其具有以下结构和内容:
| - host.json
| - MyFirstFunction
| | - function.json
| | - ...
| - MySecondFunction
| | - function.json
| | - ...
| - SharedCode (might not be there)
| - bin
部署后,您可以使用CMD或Powershell调试控制台通过Kudu浏览已部署的文件。如果您选择从程序包运行,则可以在/data/SitePackages/
看到使用的程序包。 packagename.txt指向使用的最新软件包。包的内容提取到/site/wwwroot/
中。在那里,您应该至少看到一个host.json
,一个bin
文件夹以及包含您的功能的文件夹。没有其他的。功能应用程序内容不应部署到/site/wwwroot/
的子文件夹中,例如/site/wwwroot/FunctionApp/
。
如果wwwroot中的内容和文件夹结构不正确,您可能仍会看到成功的部署,则会显示Function App,但未显示任何功能。