Azure YAML IIS web部署部署组
我正在以下url中学习IIS web部署管道的教程: 如果看到参数列表,则似乎没有任何部署组参数。因此,我如何知道/控制部署结果在哪个服务器上?ThxAzure YAML IIS web部署部署组,azure,azure-devops,azure-pipelines,Azure,Azure Devops,Azure Pipelines,我正在以下url中学习IIS web部署管道的教程: 如果看到参数列表,则似乎没有任何部署组参数。因此,我如何知道/控制部署结果在哪个服务器上?Thx 任务:IISWebAppDeploymentOnMachineGroup@0 投入: 网站名称: 虚拟应用程序:#可选 包:'$(System.DefaultWorkingDirectory)***.zip' setParametersFile:#可选 removeAdditionalFilesFlag:false#可选 excludeFil
- 任务:IISWebAppDeploymentOnMachineGroup@0 投入: 网站名称: 虚拟应用程序:#可选 包:'$(System.DefaultWorkingDirectory)***.zip' setParametersFile:#可选 removeAdditionalFilesFlag:false#可选 excludeFilesFromAppDataFlag:false#可选 takeAppOfflineFlag:false#可选 附加参数:#可选 xmlTransformation:#可选 xmlVariableSubstitution:#可选 jSONFiles:#可选
我希望它部署到我的“开发”组,如下面的屏幕截图所示。如果YAML无法部署到部署组,默认部署位置在哪里(即,哪台计算机?) 假设我想部署到我的PC上,如何将部署定向到我的localbox并将其置于C:/publish下
YAML部署组。如果您想使用部署组,则不能使用YAML。Daniell是对的,目前YAML似乎无法发布到部署组。解决方法如下: 在生成中添加以下代码:
- 任务:PublishPipelineArtifact@1 投入: targetPath:“$(Pipeline.Workspace)” 发布位置:“管道”
- 任务:PublishBuildArtifacts@1 投入: PathtoPublish:“$(Build.ArtifactStagingDirectory)” 工件名称:“drop” publishLocation:“容器”
- 任务:ArchiveFiles@2 投入: rootFolderOrFile:“$(Build.BinariesDirectory)” includeRootFolder:true archiveType:“zip” archiveFile:“$(Build.ArtifactStagingDirectory)/$(Build.BuildId.zip” replaceExistingArchive:true
然后可以转到发行版,使用iis web deploy,确保在步骤1中使用了正确的人工制品,并选择包文件夹。您应该能够看到您构建的工件 截至2020年6月,基于YAML的多级管道不支持部署组。但是,基于YAML的管道有一个替代方案:环境 您可以在Azure Pipelines>Environments下手动创建环境。创建环境后,可以在其下添加资源。目前只支持两种类型的资源:Kubernetes和虚拟机。虚拟机资源类型有点误导:它可以是虚拟机,但也可以是on-prem物理服务器。如果要部署到IIS,则需要创建虚拟机资源 在环境下创建虚拟机资源非常类似于将目标添加到部署组:当您将虚拟机资源添加到环境中时,它将生成一个PowerShell脚本,您可以将该脚本复制到目标服务器并作为管理员在那里运行。运行该脚本将在目标服务器上创建自托管代理,并将该代理注册为环境下的资源 此过程与将目标添加到部署组的过程几乎相同 在YAML文件中,指定部署作业下的环境。仅按名称指定环境是不够的。您还必须指定环境的resourceType以及名称 以下是构建和部署阶段的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):
如果YAML无法部署到部署组,默认部署位置(即,哪台计算机?)在哪里?假设我要部署到我的PC,如何将部署定向到我的localbox并将其置于C:/publish下?部署组之外的版本从代理池运行代理。这通常是一台或一组专用于运行构建/发布活动的机器。工件在代理机器上暂存,您必须将活动添加到发布过程中,以将文件复制到目标部署机器,并运行您在这些机器上编写的任何其他部署脚本。这是过程中的额外“跳跃”。我提供的链接还提供了一些(IMO hacky)解决方案,用于模拟YAML中的部署组。现在有一个叫做的东西,您可以从YAML中找到它。嗨,Simon,您有没有可能共享YAML配置的构建阶段?我正在努力找出如何将构建阶段的输出(构建的工件)链接到部署阶段的输入。我已经编辑了答案以包含构建阶段。重要的是
PublishBuildArtifacts@1
任务。这将把构建工件保存到名为“drop”的管道存储区域。然后,在部署阶段,第一步是下载“drop”工件的当前版本。当我第一次开始使用Azure DevOps时,我假设管道就像shell脚本中的管道:一个阶段的输出可以反馈到下一个阶段。但在Azure DevOps中,每个阶段都是孤立的。要将内容传递到另一个阶段,您需要发布它,然后在下一个阶段下载它。
environment:
name: Dev
resourceType: VirtualMachine