NuGet自动版本控制与VSTS

4
我们正在寻找如何在Visual Studio Team Services上使用GitHubFlow与NuGet Packages以及自动创建NuGet包的最佳实践。
我们已经使用了VSTS的“dotnet pack”命令,其中包括enter image description here 但是如何自动定义Major.Minor.Release呢? 我们不想在*.csproj或存储库内部使用这些变量,因为这样无法与Pull Requests一起使用。
当前的最佳实践是什么?
1个回答

7
您可以在Azure DevOps(以前称为VSTS)中的单个Pipeline中完成所有操作。如果您正在使用git存储库,则强烈建议使用GitVersion自动确定下一个版本号。您可以将其添加为构建任务,网址如下:https://marketplace.visualstudio.com/items?itemName=gittools.gitversion 我建议您在此存储库中将GitVersion配置为以“主线”模式运行,这样每次提交时,您的版本号都会自动递增+1,例如1.0.1、1.0.2、1.0.3。但是您始终可以将提交标记到特定版本。要设置主线模式,请在存储库的根目录中放置一个名为“GitVersion.yml”的文件,并将其内容设置为“mode:Mainline”。这仅适用于GitVersion v4.0 +
回到Azure DevOps Pipeline,在解决方案构建之后但在nuget打包命令之前运行GitVersion任务。运行GitVersion任务后,您将可以访问它创建的变量,并可以在nuget打包选项中使用这些变量。
在Nuget“包选项”下,将自动包版本设置为“使用环境变量”,然后使用变量“GitVersion_NuGetVersion”
GitVersion开箱即用,特别适用于GitFlow和GitHub Flow,但您可能需要阅读文档。网址如下:http://gitversion.readthedocs.io/en/latest/ 以下是一个示例YAML文件,可完成整个管道过程。大多数都是开箱即用的,除了从GitVersion获取版本号和配置nuget服务器以进行推送。
pool:
  name: Default
  demands:
  - msbuild
  - visualstudio
  - vstest

steps:
- task: gittools.gitversion.gitversion-task.GitVersion@4
  displayName: GitVersion
  inputs:
    updateAssemblyInfo: true

- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.3.0'

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'

- task: VSBuild@1
  displayName: 'Build solution **\*.sln'
  inputs:
    solution: '$(Parameters.solution)'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

- task: VSTest@2
  displayName: 'VsTest - testAssemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*test*.dll
     !**\obj\**
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

- task: NuGetCommand@2
  displayName: 'NuGet pack'
  inputs:
    command: pack
    versioningScheme: byEnvVar
    versionEnvVar: 'GitVersion_NuGetVersion'

- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
    nuGetFeedType: external
    publishFeedCredentials: 'Your NuGet Server'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接