DevOps NuGet打包byBuildNumber版本配置不生效报错问题
问题原因
报错由两个配置问题直接导致:
- 构建号配置层级错误:Azure DevOps YAML 中,控制
BUILD_BUILDNUMBER系统变量的name字段是根级配置项,不能嵌套在variables节点下。你当前把name写在variables块内,它只会被识别为普通自定义变量,不会覆盖系统默认构建号。默认构建号包含管道名、分支名等非数字字符,Pack任务无法从中提取符合X.Y.Z/X.Y.Z.A规则的纯数字版本段,直接触发报错。 - 版本段格式存在兼容风险:原配置中
$(Month)、$(DayOfMonth)在单数字月份/日期时会返回1位数字,部分版本的DotNetCoreCLI任务对单数字段的版本解析存在偶发异常,补两位前导零可完全规避该问题。
修复方案
方案1:修正构建号配置位置(最小改动)
把name字段从variables块移到根级,调整日期格式为两位月/日,修改后的完整YAML如下:
# 根级配置构建号,不要放在variables节点下 name: $(Year:yyyy).$(Month:MM).$(DayOfMonth:dd).$(Rev:.r) variables: feedName : 'MyNugets' buildConfiguration: 'release' pool: vmImage: windows-latest steps: - task: DotNetCoreCLI@2 displayName: 'Build' inputs: command: 'build' projects: '**/*.csproj' arguments: '--configuration $(buildConfiguration)' - task: DotNetCoreCLI@2 displayName: 'Pack' inputs: command: pack versioningScheme: byBuildNumber - task: NuGetAuthenticate@1 displayName: 'NuGet Authenticate' - task: NuGetCommand@2 displayName: 'NuGet push' inputs: command: push publishVstsFeed: '$(feedName)' allowPackageConflicts: true
修改后生成的版本号格式为2024.05.20.1这类清晰的日期加修订号格式,同一天内多次构建修订号会自动递增,不会出现版本冲突。
方案2:显式指定包版本(可控性更高)
如果不想修改全局构建号格式,可以去掉versioningScheme: byBuildNumber配置,直接在Pack步骤通过编译参数传入自定义版本号,完全绕开构建号解析逻辑:
variables: feedName : 'MyNugets' buildConfiguration: 'release' # 版本号定义为全局变量,方便后续统一调整 packageVersion: '$(Year:yyyy).$(Month:MM).$(DayOfMonth:dd).$(Rev:.r)' pool: vmImage: windows-latest steps: - task: DotNetCoreCLI@2 displayName: 'Build' inputs: command: 'build' projects: '**/*.csproj' arguments: '--configuration $(buildConfiguration)' - task: DotNetCoreCLI@2 displayName: 'Pack' inputs: command: pack # 直接传入版本参数,不依赖构建号解析 arguments: '--configuration $(buildConfiguration) -p:PackageVersion=$(packageVersion)' - task: NuGetAuthenticate@1 displayName: 'NuGet Authenticate' - task: NuGetCommand@2 displayName: 'NuGet push' inputs: command: push publishVstsFeed: '$(feedName)' allowPackageConflicts: true
这种方式不会影响管道本身的构建号显示,版本号逻辑完全独立,后续如果要加预览版后缀、分支名后缀等定制逻辑也更方便。
内容的提问来源于stack exchange,提问作者BrilBroeder
相关产品推荐
相关产品推荐

