在azure CICD构建管道下为ASP.NET MVC项目创建发布zip或nuget

问题描述 投票:0回答:1

我是 Azure 构建管道的新手,在某种程度上我已经成功创建了构建和发布工件。

问题:当构建准备就绪并且我正在复制工件时,它会进入一些奇怪的路径,我在下载后可以看到它。

喜欢==>

My.Web\Content\D_C\a\1\s\My.Web\obj\Release\Package\PackageTmp

我只需要包含发布版本的 zip,可以直接复制到 IIS。

trigger:
- '*'

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: '/t:build /p:DeployOnBuild=true /p:OutputPath="$(Build.ArtifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(build.artifactStagingDirectory)\_PublishedWebsites\My.Web_Package\My.Web.zip'
    publishLocation: 'pipeline'
    artifact: 'drop'
    name: 'WebArtifact-$(Build.BuildNumber)'

让我知道我做错了什么,另外在我的解决方案下有多个项目库,但我需要 ASP.NET MVC 5 Web 项目应用程序的单个发布版本,该版本位于我的解决方案中。

如果有更好的方法来编写这个管道,请公会。

还请告诉我我们是否可以添加相同的内部版本号/版本号。

非常感谢您的任何建议和意见。

asp.net azure asp.net-mvc-5 cicd
1个回答
0
投票

神器将默认发布

VS 构建任务将构建您的应用程序,类似于使用 MSBuild 构建任务的 Visual Studio。

Visual Studio:-

Ms Build 用于构建应用程序:-

enter image description here

我构建了应用程序并将其发布到本地文件夹中,构建文件夹如下所示:-

enter image description here

Azure 构建管道:-

同样的事情发生在您的Azure DevOps管道中,当您使用Vs Build时,构建是通过Ms Build完成的,并且发布的工件存储在 -

$(Build.ArtifactStagingDirectory)
> 根据此MS文档
Build.ArtifactStagingDirectory
是用于运行管道的 Azure DevOps Agent 的预定义变量。当您使用 windows-latest 作为代理时,Build.ArtifactStagingDirectory 会路由到
c:\agent_work\1\a
。因此它被存储到上面的默认位置。

我已使用下面的 YAML pipelinebuild

Asp.Net MVC 5
项目并将其发布为
zip
,并将已发布的工件名称设置为构建号。

VsBuild 参考这里

trigger:
- master

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: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)\WebApp.zip'
    ArtifactName: 'WebArtifact-$(Build.BuildNumber)'
    publishLocation: 'Container'

输出:-

enter image description here

enter image description here

enter image description here

但是不要使用

VSbuild task
,并且由于您需要管理多个包和库,我建议使用
.NET Core CLI
任务来构建您的应用程序,然后将其发布到IIS,如下所示:-

trigger:
  branches:
    include:
      - main

jobs:
- job: Build
  displayName: 'Build and Publish'
  pool:
    vmImage: 'windows-latest'
  steps:
  - task: UseDotNet@2
    displayName: 'Install .NET Core SDK'
    inputs:
      version: '7.x'

  - task: DotNetCoreCLI@2
    displayName: 'Restore Dependencies'
    inputs:
      command: 'restore'
      projects: '**/*.csproj'

  - task: DotNetCoreCLI@2
    displayName: 'Build Project'
    inputs:
      command: 'build'
      projects: '**/*.csproj'
      arguments: '--configuration Release'

  - task: DotNetCoreCLI@2
    displayName: 'Publish Project'
    inputs:
      command: 'publish'
      projects: '**/*.csproj'
      publishWebProjects: true
      arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
      zipAfterPublish: true

  - task: PublishPipelineArtifact@1
    displayName: 'Publish Artifact'
    inputs:
      targetPath: '$(Build.ArtifactStagingDirectory)'
      artifactName: 'WebArtifact-$(Build.BuildNumber)'
      publishLocation: 'pipeline'

zipAfterPublish: true
参数,它将在构建完成后压缩构建工件。

输出:-

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.