【问题标题】:DevOps IIS Release Pipeline Not Extracting Files To Correct LocationDevOps IIS 发布管道未将文件提取到正确位置
【发布时间】:2021-11-06 15:23:18
【问题描述】:

我正在尝试将 ASPNET Core 应用程序的发布管道设置到本地 IIS 虚拟机 (VM)。

除了将文件部署到 IIS 服务器之外,一切都按预期工作,但它没有提取文件,而是将 zip 文件放在错误的文件夹位置。例如,应用程序文件应该部署到%SystemDrive%\sites\{mysite} - 这是在 IIS Web 应用程序管理部分下的发布管道中设置的(如下所示)。

在服务器上,这是部署到正确的位置,但不是将所有应用程序文件部署到 \sites\{mysite},而是创建两个额外的文件夹,然后像这样删除一个名为“WebApp.zip”的 zip 文件,( %SystemDrive%\sites\{mysite}\{artifactName}\{artifactName}\WebApp.zip)

我如何才能真正将网站应用程序文件部署到\sites\{mysite} 目录?

我确实有一个 yaml 文件,如下所示。任何帮助将不胜感激。

trigger:
- development

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:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)' 

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)' 
    artifactName: '{artifactName}' #removed the name for this post

- task: IISWebAppDeploymentOnMachineGroup@0
  displayName: 'IIS Web App Deploy'
  inputs:
    WebSiteName: '{removed}' #removed the name for this post
    Package: '$(System.DefaultWorkingDirectory)'
    RemoveAdditionalFilesFlag: true
    XmlVariableSubstitution: True

编辑:

我已将我的 yaml 更新为如下所示。如果我不包含PublishPipelineArtifact@1 任务,则不会将任何文件复制到 IIS 服务器。现在也部署到这样的文件夹结构:{artifact}\{artifact}\(all of the files),这是一个改进,但我仍然不需要两个 {artifact} 文件夹,我只需要部署在网站根目录中的文件。

非常感谢任何帮助,因为到目前为止我已经在这方面花费了相当多的时间。

更新的 Yaml:

trigger:
- development

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: $(System.DefaultWorkingDirectory)/bin/Release/net5.0
    artifact: {artifactName}

【问题讨论】:

    标签: asp.net-core azure-devops azure-pipelines devops


    【解决方案1】:

    为您的IISWebAppDeploymentOnMachineGroup@0 任务的Package 输入指定*.zip 包文件的路径,而不仅仅是默认工作目录。

    编辑:

    你有很多事情让我感到困惑,我相信这可能是因为你不确定自己在做什么 - 如果不正确,请原谅我。首先,您看起来像是两次构建和打包构建结果 - 第一次使用 VSBuild@1,然后通过两个 DotNetCoreCLI@2 任务第二次使用 dotnet builddotnet publish。然后你有一个 PublishPipelineArtifact@1 引用打包/发布任务的目标。

    然后您尝试部署这些包,但引用完全不同的路径/文件。通常,构建和部署将分为两个独立的作业,部署作业将下载已发布的管道工件。下载的工件是您要在部署任务的 Package 输入中引用的路径/文件。

    【讨论】:

    • 我试过这个,我也试过把完整路径放在下面,但它仍然不起作用。 - 任务:IISWebAppDeploymentOnMachineGroup@0 displayName:'IIS Web App Deploy' 输入:WebSiteName:'{mysite}' 包:'c:\sites\{mysite}\{artifact}\{artifact}\WebApp.zip' RemoveAdditionalFilesFlag:true XmlVariableSubstitution: True
    • 评论太长,我会更新我的答案
    • 你不知道我在做什么并没有错。每次我尝试在 DevOps 中设置管道时,它都没有真正起作用,所以我总是把它装好,然后再试一次。我会处理你的评论,看看它是否有所作为。我很感激!
    • 我用更新的 yaml 和一些附加信息编辑了我的原始帖子。这样看起来更好吗?
    • 您更新的 YAML 不会发布/打包构建结果。我会将dotnet publish 命令任务添加回来以生成一个压缩文件到$(Build.ArtifactStagingDirectory),然后使用同一目录(没有额外路径)执行PublishPipelineArtifact@1 任务。接下来,创建第二个作业,下载任务并进行部署以寻找 *.zip - Microsoft 文档中的许多示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多