我正在根据 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 下?
最佳答案
截至 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/