从构建或发布管道中以Azure devop发布nuget包

时间:2019-12-06 23:33:06

标签: .net azure .net-core azure-devops nuget

在Azure devop中发布nuget软件包的正确位置在哪里?使用构建或发布管道会更好吗?

一种解决方案是仅在构建中创建工件(zip),然后在发行版中下载该工件(创建nuget packge)。

编辑

通过条件任务解决了该问题:

trigger:
  branches:
    include:
    - master
    - dev
  paths:
    include:
    - src/*
    - test/*
    - azure-pipelines.yml

pr:
  branches:
    include:
    - '*'

pool:
  vmImage: 'ubuntu-16.04'

variables:
  buildConfiguration: 'Release'

steps:
- task: UseDotNet@2
  displayName: 'Use dotnet sdk 3.x'
  inputs:
    version: 3.x
    includePreviewVersions: false

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

- task: DotNetCoreCLI@2
  condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
  displayName: Build_release
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration release'

- task: DotNetCoreCLI@2
  condition: ne(variables['Build.SourceBranch'], 'refs/heads/master')
  displayName: Build_Debug
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration debug'

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

- task: NuGetToolInstaller@1
  displayName: 'Install nuget 5.x'
  inputs:
    versionSpec: '5.x'

- task: NuGetCommand@2
  displayName: 'Pack nuget'
  inputs:
    command: 'pack'
    packagesToPack: 'src/**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'

- task: NuGetCommand@2
  condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
  displayName: 'Push to nuget feed sample-cloud'
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: '<guid>'
    allowPackageConflicts: true

- task: NuGetCommand@2
  condition: eq(variables['Build.SourceBranch'], 'refs/heads/dev')
  displayName: 'Push to nuget feed sample-cloud-dev'
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: '<guid>/<guid>'

1 个答案:

答案 0 :(得分:0)

  

通过构建或发布管道以azure devops发布nuget包

这绝对是您的个人喜好,这是个人喜好,没有标准要求或流程。

一般来说,发布程序包的过程是:构建项目/解决方案->打包.csproj / .nuspec文件以生成nuget程序包->发布生成的程序包,我们不故意将构建和发布过程分为CICD,这样我们就不需要额外的管道开销,也不需要在构建和发布管道之间传递工件。

因此,我们可以生成软件包并通过NuGet任务packpush在构建管道中发布该软件包。

当然,如果软件包发行版和CI,CD具有严格的标准要求,我们需要在发行管道中发布软件包。例如,在构建管道中,我们会生成预发布程序包,但如果只需要发布稳定版本程序包,则在这种情况下,我们需要创建一个发布管道来发布稳定软件包,否则,我们必须在构建管道中手动启用/禁用推送任务。

希望这会有所帮助。