将 Web 应用部署到 Azure 应用服务 - 使用资源管理器连接

Deploy a web app to Azure App Services - Using a Resource Manager connection

我有一个 Azure 管道,它构建一个 asp-net 核心项目并从中构建一个 docker 图像并将其推送到 Azure 容器注册表。

此管道由 azure-pipelines.acr.yml 文件制成。我对 Deployments 分支执行的每个 git 推送操作都会在新构建中将其转换到我的管道中。

直到这里我有一个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 流程推进我的发布管道的创建。

您参考了正确的文档 link https://docs.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure?view=azure-devops 通过创建新的服务连接来设置连接。

根据您的构建管道错误 'service connection does not exist or has not been authorized for use',问题应属于以下问题之一。

#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 link.

选项#2: 如果问题属于选项 #2,那么请提供以下信息以更好地诊断问题。

2a。创建服务连接时您选择了哪个选项。是 'Service Principal Authentication' 还是 'Managed Identity Authentication'?

2b.If是'Service Principal Authentication'那你select在'Scope level'做了什么选择。是 'Subscription' 还是 'ManagementGroup'?

2c.If 是 'Subscription' 或 'ManagementGroup' 选项,您是否单击 'use the automated version of the service connection dialog' 并提供所有详细信息,然后单击 'Verify connection' ?连接验证是否成功?

希望对您有所帮助!!干杯!! :)