在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>'
答案 0 :(得分:0)
通过构建或发布管道以azure devops发布nuget包
这绝对是您的个人喜好,这是个人喜好,没有标准要求或流程。
一般来说,发布程序包的过程是:构建项目/解决方案->打包.csproj
/ .nuspec
文件以生成nuget程序包->发布生成的程序包,我们不故意将构建和发布过程分为CI
和CD
,这样我们就不需要额外的管道开销,也不需要在构建和发布管道之间传递工件。
因此,我们可以生成软件包并通过NuGet任务pack和push在构建管道中发布该软件包。
当然,如果软件包发行版和CI,CD具有严格的标准要求,我们需要在发行管道中发布软件包。例如,在构建管道中,我们会生成预发布程序包,但如果只需要发布稳定版本程序包,则在这种情况下,我们需要创建一个发布管道来发布稳定软件包,否则,我们必须在构建管道中手动启用/禁用推送任务。
希望这会有所帮助。