将 Web 应用部署到 Azure 应用服务 - 使用资源管理器连接
Posted
技术标签:
【中文标题】将 Web 应用部署到 Azure 应用服务 - 使用资源管理器连接【英文标题】:Deploy a web app to Azure App Services - Using a Resource Manager connection 【发布时间】:2019-07-06 06:03:14 【问题描述】:我有一个 Azure 管道,它构建一个 asp-net 核心项目并从中构建一个 docker 映像并将其推送到 Azure Container Registry。
此管道由azure-pipelines.acr.yml
文件组成。我对 Deployments 分支执行的每个 git push 操作都会在新构建中将其转换到我的管道中。
直到这里我有一个 CI 管道,以便将主分支中的每个新更改集成到我的管道中。
但是,在完成每个构建之后,我必须运行推送到我的容器注册表中的该映像的新实例,并将其部署为新的应用服务,所有这些过程都是从 Azure 门户服务手动完成的。
我一直在阅读,我需要的是使用我的 Azure 管道执行持续部署。在我的azure-pipelines.acr.yml
中,我有 CI 管道工作流程,其中包含以下步骤:
pool:
vmImage: 'ubuntu-16.04' # other options: 'macOS-10.13', 'vs2017-win2016'
variables:
buildConfiguration: 'Release'
imageName: 'zcrm365:$(Build.BuildId)'
dockerId: 'zcrm365' # This is my registry name access key
dockerPassword: 'my password' # Password access key
# I should create an environment variables to dockerId and dockerPassword
steps:
# Build a docker image
- script: |
docker build -t $(dockerId)/$(imageName) -f ZAccountSyncService/Dockerfile . # add options to this command to meet your needs
docker build -t $(dockerId).azurecr.io/$(imageName) -f ZAccountSyncService/Dockerfile .
docker login -u $(dockerId) -p $(dockerPassword) $(dockerId).azurecr.io
docker images
docker push $(dockerId).azurecr.io/$(imageName)
##### DEPLOY A WEB APP ########
- script: dotnet publish --output $(Build.ArtifactStagingDirectory)
# Publish the output of our build to Azure Pipelines
- task: PublishBuildArtifacts@1
- task: DotNetCoreCLI@2
inputs:
command: publish
# our repository seems has no web project
publishWebProjects: False
# We should specify your .csproj in project(s) option.
projects: ""
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
# CREATING AN Azure App Service Deploy task
- task: AzureRmWebAppDeployment@3
inputs:
# Is this my ID Subscription?
azureSubscription: '4e65758d-dbf5-456f-bb55-6b92273772dd'
WebAppName: 'zcrm-365'
Package: $(System.ArtifactsDirectory)/**/*.zip
而且,在我的构建管道中,我得到了这个输出错误:
Job Job: Step input azureSubscription references service connection ID SUBSCRIPTION which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz.
我正在尝试this process,并且我有一个活动的 Azure 订阅,但是我无法设置到它的连接。
如何设置我的服务连接以连接到 Azure 资源管理器并可以创建我的应用服务?
我们的想法是执行此步骤,以便使用我正在执行的 CI 流程创建我的发布管道。
【问题讨论】:
尝试设置时出现什么错误?它会创建一个弹出窗口,因此您应该允许临时弹出窗口来创建它 @4c74356b41 抱歉,我不明白我是从 .yml 文件创建任务,而不是使用可视化设计器,可能是在这个创建弹出窗口的地方? 我正在尝试这个过程并且我有一个活动的 Azure 订阅,但是我无法设置到它的连接。 - 我指的是这个 @4c74356b41 这和我有同样的问题......但是当你告诉我时我不明白 > 它会创建一个弹出窗口,所以你应该允许临时创建弹出窗口你能提供更多请详细点? 【参考方案1】:您指的是正确的文档链接https://docs.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure?view=azure-devops 以通过创建新服务连接来设置连接。
根据您的构建管道错误“服务连接不存在或未被授权使用”,该问题应属于以下问题之一。
#1。您尚未创建名为“4e65758d-dbf5-456f-bb55-6b92273772dd”的服务连接。
#2。您创建的服务连接无权连接到预期的 Azure 订阅。
选项#1:
如果问题属于选项 #1,请更新您的 yml 文件 azureSubscription: 'YOURSERVICECONNECTIONNAME'
(但在这种情况下不是订阅 ID)。
如需说明,请参考此https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#use-a-service-connection 链接。
选项#2: 如果问题属于选项 #2,请提供以下信息以更好地诊断问题。
2a。您在创建服务连接时遵循了哪个选项。是“服务主体身份验证”还是“托管身份验证”?
2b.如果是“服务主体身份验证”,那么您在“范围级别”选择了什么选项。是“订阅”还是“管理组”?
2c.如果是“订阅”或“管理组”选项,您是否点击了“使用服务连接对话框的自动版本”并提供了所有详细信息,然后您是否点击了“验证连接”?连接是否验证成功?
希望这会有所帮助!!干杯!! :)
【讨论】:
以上是关于将 Web 应用部署到 Azure 应用服务 - 使用资源管理器连接的主要内容,如果未能解决你的问题,请参考以下文章
通过 Azure DevOps 将多个应用程序部署到同一个 Azure Web 应用程序
如何将python web应用程序部署到Microsoft Azure
Azure DevOps - 将 Web 应用程序部署到 IIS
如何将本地 Docker 映像部署到 Azure 应用服务?