YAML IIS Web部署部署组

时间:2019-11-20 12:20:56

标签: azure azure-devops azure-pipelines

我正在下面的URL中查看有关IIS Web部署管道的教程:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/iis-web-app-deployment-on-machine-group?view=azure-devops

如果看到参数列表,则似乎没有任何部署组参数。因此,我如何知道/控制部署结果进入哪台服务器?谢谢

  • 任务:IISWebAppDeploymentOnMachineGroup @ 0 输入:

    webSiteName:

    virtualApplication:#可选

    软件包:'$(System.DefaultWorkingDirectory)***。zip'

    setParametersFile:#可选

    removeAdditionalFilesFlag:false#可选

    excludeFilesFromAppDataFlag:false#可选

    takeAppOfflineFlag:false#可选

    additionalArguments:#可选

    xmlTransformation:#可选

    xmlVariableSubstitution:#可选

    jSONFiles:#可选

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

假设我要部署到我的PC,如何将部署定向到我的本地邮箱并放在C:/ publish下?

enter image description here

3 个答案:

答案 0 :(得分:7)

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

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

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

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

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

这是我在部署阶段的YAML:

- 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)和resourceType(VirtualMachine)。

答案 1 :(得分:1)

YAML does not support部署组。如果要使用部署组,则不能使用YAML。

答案 2 :(得分:0)

Daniell是正确的,目前看来YAML无法将其发布到部署组中,解决方法如下:

在构建中添加以下代码:

  • 任务:PublishPipelineArtifact @ 1 输入: targetPath:'$(Pipeline.Workspace)' publishLocation:“管道”

  • 任务:PublishBuildArtifacts @ 1 输入: 发布路径:“ $(Build.ArtifactStagingDirectory)” ArtifactName:“ drop” publishLocation:“容器”

  • 任务:ArchiveFiles @ 2 输入: rootFolderOrFile:'$(Build.BinariesDirectory)' includeRootFolder:true archiveType:“ zip” archiveFile:“ $(Build.ArtifactStagingDirectory)/ $(Build.BuildId).zip” replaceExistingArchive:true

,然后您可以转到发行版,使用iis Web部署,确保在步骤1中使用了正确的工件,然后选择您的程序包文件夹。您应该能够看到所构建的工件。