azure - YAML IIS Web 部署部署组

标签 azure azure-devops azure-pipelines

我正在根据 IIS Web App Deploy task 上的文档遵循 ​​IIS Web 部署管道的教程。

如果您看到参数列表,似乎没有任何部署组参数。因此,我如何知道/控制部署结果去了哪个服务器?

- task: IISWebAppDeploymentOnMachineGroup@0
  inputs:
    webSiteName: 
    virtualApplication: # Optional
    package: '$(System.DefaultWorkingDirectory)\**\*.zip' 
    setParametersFile: # Optional
    removeAdditionalFilesFlag: false # Optional
    excludeFilesFromAppDataFlag: false # Optional
    takeAppOfflineFlag: false # Optional
    additionalArguments: # Optional
    xmlTransformation: # Optional
    xmlVariableSubstitution: # Optional
    jSONFiles: # Optional

我希望它部署到我的“Dev”组,如下面的屏幕截图所示。如果YAML无法部署到部署组,默认部署位置在哪里(即哪台计算机?)

假设我想部署到我的电脑上,如何引导部署到我的本地盒子并将其放在 C:/publish 下?

enter image description here

最佳答案

截至 2020 年 6 月,基于 YAML 的多阶段管道不支持部署组。但是,基于 YAML 的管道有一个替代方案:环境。

您可以在 Azure Pipelines > 环境下手动创建环境。创建环境后,您可以在其下方添加资源。目前仅支持两种类型的资源:Kubernetes 和虚拟机。虚拟机资源类型有点误导:它可以是虚拟机,也可以是本地物理服务器。如果您要部署到 IIS,则需要创建虚拟机资源。

在环境下创建虚拟机资源非常类似于将目标添加到部署组:当您将虚拟机资源添加到环境时,它将生成一个 PowerShell 脚本,您可以将其复制到目标服务器并在其中运行行政人员。运行该脚本将在目标服务器上创建一个自托管代理,并将该代理注册为环境下的资源。

此过程几乎与将目标添加到部署组的过程相同。

在 YAML 文件中指定部署作业下的环境。仅通过名称指定环境是不够的。您还必须指定环境的资源类型以及名称。

这是我用于构建和部署阶段的 YAML:

trigger:
- master

stages:
- stage: 'Build'
  displayName: 'Build the web application'
  
  jobs:
  - job: 'Build'
    displayName: 'Build job'
    
    pool:
      vmImage: 'windows-latest'
    
    variables:
      solution: '**/*.sln'
      buildPlatform: 'Any CPU'
      buildConfiguration: 'Release'
    
    steps:
    - task: NuGetToolInstaller@1
    
    - task: NuGetCommand@2
      inputs:
        restoreSolution: '$(solution)'
    
    - task: VSBuild@1
      inputs:
        solution: '$(solution)'
        msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'
    
    - task: VSTest@2
      inputs:
        platform: '$(buildPlatform)'
        configuration: '$(buildConfiguration)'
        
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'

- stage: 'Deploy'
  displayName: 'Deploy the web application'
  dependsOn: Build
  jobs:
  - deployment: 'DeployToDev'
    displayName: 'Deploy the web application to dev environment'
    variables:
      Parameters.IISDeploymentType: 'IISWebsite'
      Parameters.ActionIISWebsite: 'CreateOrUpdateWebsite'
      Parameters.WebsiteName: 'Default Web Site'
      Parameters.WebsitePhysicalPath: '%SystemDrive%\inetpub\wwwroot\AspNetDemo'
      Parameters.AddBinding: false
      Parameters.VirtualPathForApplication: '/AspNetDemo'
      Parameters.AppPoolName: ''
      Parameters.VirtualApplication: 'AspNetDemo'
      Parameters.Package: '$(Pipeline.Workspace)\drop\*.zip'
      Parameters.RemoveAdditionalFilesFlag: true
      Parameters.TakeAppOfflineFlag: true
      Parameters.XmlTransformation: true
      Parameters.XmlVariableSubstitution: true
    environment:
      name: Dev
      resourceType: VirtualMachine
    strategy:
      runOnce:
        deploy:
          steps:
          - download: current
            artifact: drop
            
          - task: IISWebAppManagementOnMachineGroup@0
            displayName: 'IIS Web App Manage'
            inputs:
              IISDeploymentType: '$(Parameters.IISDeploymentType)'
              ActionIISWebsite: '$(Parameters.ActionIISWebsite)'
              WebsiteName: '$(Parameters.WebsiteName)'
              WebsitePhysicalPath: '$(Parameters.WebsitePhysicalPath)'
              AddBinding: $(Parameters.AddBinding)
              ParentWebsiteNameForVD: '$(Parameters.WebsiteName)'
              VirtualPathForVD: '$(Parameters.VirtualPathForApplication)'
              ParentWebsiteNameForApplication: '$(Parameters.WebsiteName)'
              VirtualPathForApplication: '$(Parameters.VirtualPathForApplication)'
              AppPoolName: '$(Parameters.AppPoolName)'

          - task: IISWebAppDeploymentOnMachineGroup@0
            displayName: 'IIS Web App Deploy'
            inputs:
              WebSiteName: '$(Parameters.WebsiteName)'
              VirtualApplication: '$(Parameters.VirtualApplication)'
              Package: '$(Parameters.Package)'
              RemoveAdditionalFilesFlag: $(Parameters.RemoveAdditionalFilesFlag)
              TakeAppOfflineFlag: $(Parameters.TakeAppOfflineFlag)
              XmlTransformation: $(Parameters.XmlTransformation)
              XmlVariableSubstitution: $(Parameters.XmlVariableSubstitution)

记下部署阶段的环境信息,指定名称(Dev)和资源类型(VirtualMachine):

environment:
  name: Dev
  resourceType: VirtualMachine

关于azure - YAML IIS Web 部署部署组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58954243/

相关文章:

azure - 如果警告数量超过一定限制,AzureDevOps 构建管道将失败

azure - 使用 Azure CLI 从资源组中仅获取可用资源列表

visual-studio - 使用 VS 2019 远程调试 Azure 应用服务

c# - ASP.NET Core 处理方法不允许 405

git - VSTS 发布定义 - 如何每月安排?

azure - 在 VSTS 中使用arm模板将azure函数应用程序部署到Azure时出错

azure - 如何使用 oauth2_proxy 对 AAD (Azure Active Directory) 进行身份验证并获取访问 token

azure - 将 Azure DevOps 组织从一个订阅移动到另一个订阅

c# - Azure DevOps Pipeline 构建失败,因为它可以创建文件夹来写入 XML 文档文件

azure-devops - 阶段之间管道中的 VSTS 传递参数