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

nvbavucw  于 11个月前  发布在  .NET
关注(0)|答案(1)|浏览(106)

我是Azure构建管道的新手,在某种程度上,我已经成功地创建了一个构建和发布工件。
问题:当构建准备就绪时,我正在复制工件,它会进入一些奇怪的路径,我可以在下载后看到它。
Like ==> My.Web\Content\D_C\a\1\s\My.Web\obj\Release\Package\PackageTmp
我只需要包含发布版本,可以直接复制到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项目应用程序,这是在我的解决方案。
请公会如果有更好的方式来写这个管道。
也让我知道,如果我们可以添加版本号/版本号相同。
非常感谢您的任何建议和投入。

bpsygsoo

bpsygsoo1#

将在默认情况下发布该文件
VS Build任务将构建您的应用,类似于使用MSBuild构建任务的Visual Studio。

Visual Studio:-

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

x1c 0d1x的数据
我构建了应用程序并将其发布到本地文件夹中,这就是构建文件夹的样子:


Azure构建管道:-

同样的事情发生在你的Azure DevOps管道中,当你使用Vs Build时,Build是用Ms Build完成的,发布的工件存储在-$(Build.ArtifactStagingDirectory)>根据这个MS文档Build.ArtifactStagingDirectory是用于运行管道的Azure DevOps代理的预定义变量。由于您使用windows-latest作为代理,ArtifactStagingDirectory路由到c:\agent_work\1\a。因此它被存储到上面的默认位置。
我已经使用下面的
YAML pipeline
构建 * Asp.Net MVC 5项目,并将其发布为zip,并将发布的工件名称设置为build-number。
参考VsBuild here

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'

字符串

输出:-




x1c4d 1x的

  • 但是 而不是使用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**参数,它将在构建完成后压缩构建工件。

输出:-



相关问题