Azure devops 将Azure DevOps内部版本号设置为Gitversion MajorMinorPatch号

Azure devops 将Azure DevOps内部版本号设置为Gitversion MajorMinorPatch号,azure-devops,azure-pipelines,semantic-versioning,azure-devops-extensions,gitversion,Azure Devops,Azure Pipelines,Semantic Versioning,Azure Devops Extensions,Gitversion,我正在尝试将Azure DevOps管道的内部版本号从gitversion设置为MajorMinorPatch版本。在我的YAML中,我有以下管道: - task: GitVersion@5 inputs: preferBundledVersion: false updateAssemblyInfo: true - task: PowerShell@2 inputs: targetType: 'inline' script: | $versio

我正在尝试将Azure DevOps管道的内部版本号从gitversion设置为MajorMinorPatch版本。在我的YAML中,我有以下管道:

- task: GitVersion@5
  inputs:
    preferBundledVersion: false
    updateAssemblyInfo: true
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $versionInfo = '$($GITVERSION_MAJORMINORPATCH)'
      Write-Host("##vso[task.setvariable variable=Version;]$versionInfo")
- script: echo %Action%%BuildVersion%
  displayName: 'Set build version'
  env:
    Action: '##vso[build.updatebuildnumber]'
    BuildVersion: '$env:Version'
问题是,当我运行管道时,我会得到一个管道名称,如:0.1.0-alpha.70

我不知道为什么我会得到-alpha.70。我想我知道它们的意思,但我不希望在我的版本字符串中看到它们。当我在本地运行gitversion时,我的MajorMinorPatch字符串是0.1.0,这就是我想要看到的。有谁能帮我得到这些信息吗

编辑:对于任何好奇的人,我在这里包括我的GitVersion.yml,它几乎是标准配置:

assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
mode: ContinuousDeployment
tag-prefix: '[vV]'
continuous-delivery-fallback-tag: ''
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: Enabled
branches:
  develop:
    mode: ContinuousDeployment
    tag: alpha
    increment: Minor
    prevent-increment-of-merged-branch-version: false
    track-merge-target: true
    regex: ^dev(elop)?(ment)?$
    source-branches: []
    tracks-release-branches: true
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 0
  master:
    mode: ContinuousDeployment
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^master$
    source-branches:
    - develop
    - release
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: true
    pre-release-weight: 55000
  release:
    mode: ContinuousDeployment
    tag: beta
    increment: None
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^releases?[/-]
    source-branches:
    - develop
    - master
    - support
    - release
    tracks-release-branches: false
    is-release-branch: true
    is-mainline: false
    pre-release-weight: 30000
  feature:
    mode: ContinuousDeployment
    tag: useBranchName
    increment: Inherit
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^features?[/-]
    source-branches:
    - develop
    - master
    - release
    - feature
    - support
    - hotfix
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 30000
  pull-request:
    mode: ContinuousDeployment
    tag: PullRequest
    increment: Inherit
    prevent-increment-of-merged-branch-version: false
    tag-number-pattern: '[/-](?<number>\d+)'
    track-merge-target: false
    regex: ^(pull|pull\-requests|pr)[/-]
    source-branches:
    - develop
    - master
    - release
    - feature
    - support
    - hotfix
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 30000
  hotfix:
    mode: ContinuousDeployment
    tag: beta
    increment: Patch
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    regex: ^hotfix(es)?[/-]
    source-branches:
    - develop
    - master
    - support
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: false
    pre-release-weight: 30000
  support:
    mode: ContinuousDeployment
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    regex: ^support[/-]
    source-branches:
    - master
    tracks-release-branches: false
    is-release-branch: false
    is-mainline: true
    pre-release-weight: 55000
ignore:
  sha: []
commit-date-format: yyyy-MM-dd
merge-message-formats: {}
程序集版本控制方案:MajorMinorPatch
程序集文件版本控制方案:MajorminoPatchTag
模式:连续部署
标记前缀:'[vV]'
连续传递回退标记:“”
主版本通气消息:'\+semver:\s?(断开主版本)'
次要版本通气消息:'\+semver:\s?(功能部件|次要)'
修补程序版本通气消息:'\+semver:\s?(修复修补程序)'
无通气消息:'\+semver:\s?(无|跳过)'
旧版semver填充:4
构建元数据填充:4
自版本源填充后提交:4
提交消息增量:已启用
分支机构:
发展:
模式:连续部署
标签:阿尔法
增量:小调
防止合并分支版本的增量:false
跟踪合并目标:true
正则表达式:^dev(elop)?(elop)$
源分支:[]
跟踪发布分支:true
发布分支:false
主线是假的吗
释放前重量:0
大师:
模式:连续部署
标记:“”
增量:补丁
防止合并分支版本的增量:true
跟踪合并目标:false
正则表达式:^master$
来源分支机构:
-发展
-释放
跟踪发布分支:false
发布分支:false
主线是真的吗
释放前重量:55000
发布:
模式:连续部署
标签:beta
增量:无
防止合并分支版本的增量:true
跟踪合并目标:false
正则表达式:^releases?[/-]
来源分支机构:
-发展
-主人
-支持
-释放
跟踪发布分支:false
发布分支:正确吗
主线是假的吗
释放前重量:30000
特色:
模式:连续部署
标签:useBranchName
增量:继承
防止合并分支版本的增量:false
跟踪合并目标:false
正则表达式:^features?[/-]
来源分支机构:
-发展
-主人
-释放
-特征
-支持
-修补程序
跟踪发布分支:false
发布分支:false
主线是假的吗
释放前重量:30000
拉取请求:
模式:连续部署
标签:PullRequest
增量:继承
防止合并分支版本的增量:false
标记编号模式:'[/-](?\d+)
跟踪合并目标:false
正则表达式:^(pull | pull \-请求| pr)[/-]
来源分支机构:
-发展
-主人
-释放
-特征
-支持
-修补程序
跟踪发布分支:false
发布分支:false
主线是假的吗
释放前重量:30000
修补程序:
模式:连续部署
标签:beta
增量:补丁
防止合并分支版本的增量:false
跟踪合并目标:false
正则表达式:^修补程序?[/-]
来源分支机构:
-发展
-主人
-支持
跟踪发布分支:false
发布分支:false
主线是假的吗
释放前重量:30000
支持:
模式:连续部署
标记:“”
增量:补丁
防止合并分支版本的增量:true
跟踪合并目标:false
正则表达式:^支持[/-]
来源分支机构:
-主人
跟踪发布分支:false
发布分支:false
主线是真的吗
释放前重量:55000
忽略:
沙:[]
提交日期格式:yyyy-MM-dd
合并消息格式:{}

希望这会有所帮助。

在我的测试项目上测试之后。我发现
$($GITVERSION\u MAJORMINORPATCH)
无法获取版本值,
$env:version
无法引用变量版本。我对您的构建yml文件做了以下更改,然后它按预期工作

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $versionInfo = '$(GitVersion.MajorMinorPatch)'
      Write-Host("##vso[task.setvariable variable=Version;]$versionInfo")
      Write-Host($versionInfo)

- script: echo %Action%%BuildVersion%
  displayName: 'Set build version'
  env:
    Action: '##vso[build.updatebuildnumber]'
    BuildVersion: '$(Version)'

在powershell任务中,我使用
$(GitVersion.MajorMinorPatch)
引用GitVersion。使用
$(Version)
获取BuildVersion

的版本字符串显然,我试图做的并不是传递版本号的方法。相反,我现在使用转换来更新JSON配置中的值,该值将作为构建工件发布。以下是我当前对azure-pipelines.yml的迭代:

name: $(date:yyyyMMdd)$(rev:.r)-$(Build.SourceBranchName)-$(GitVersion.SemVer)

trigger:
  - master
  - develop

stages:
- stage: DEV
  displayName: 'DEV'
  condition: and(always(), contains(variables['Build.SourceBranch'], 'develop'))
  pool:
    vmImage: 'ubuntu-latest'
  variables:
    contentVersion: $(GitVersion.AssemblySemVer)
    parameters.semVer.value: $(GitVersion.AssemblySemVer)
    parameters.resourceGroupName.value: 'rgName-DEV'
  jobs:
    - job: DevResourceGroup
      steps:
      - task: GitVersion@5
        inputs:
          preferBundledVersion: false
          updateAssemblyInfo: true
          configFilePath: './GitVersion.yml'
      - script: echo %Action%%BuildVersion%
        displayName: 'Set Build Number to Semantic Version'
        env:
          Action: '##vso[build.updatebuildnumber]'
          BuildVersion: '$(GitVersion.SemVer)'
      - task: FileTransform@2
        inputs:
          folderPath: '$(Build.SourcesDirectory)'
          xmlTransformationRules: 
          jsonTargetFiles: './ResourceGroup/resourceGroup.parameters.json'
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          deploymentScope: 'Subscription'
          azureResourceManagerConnection: 'ConnectionName'
          subscriptionId: 'GUID'
          location: 'East US'
          templateLocation: 'Linked artifact'
          csmFile: '$(Build.SourcesDirectory)/ResourceGroup/resourceGroup.json'
          csmParametersFile: '$(Build.SourcesDirectory)/ResourceGroup/resourceGroup.parameters.json'
          deploymentMode: 'Incremental'
      - task: PublishBuildArtifacts@1
        inputs:
          PathtoPublish: '$(Build.SourcesDirectory)'
          ArtifactName: 'develop'
          publishLocation: 'Container'

- stage: PROD
  displayName: 'PROD'
  condition: and(always(), contains(variables['Build.SourceBranch'],'master'))
  pool:
    vmImage: 'ubuntu-latest'
  variables:
    contentVersion: $(GitVersion.AssemblySemVer)
    parameters.semVer.value: $(GitVersion.AssemblySemVer)
  jobs:
    - job: ProdResourceGroup
      steps:
      - task: GitVersion@5
        inputs:
          preferBundledVersion: false
          updateAssemblyInfo: true
          configFilePath: './GitVersion.yml'
      - script: echo %Action%%BuildVersion%
        displayName: 'Set Build Number to Semantic Version'
        env:
          Action: '##vso[build.updatebuildnumber]'
          BuildVersion: '$(GitVersion.SemVer)'
      - task: FileTransform@2
        inputs:
          folderPath: '$(Build.SourcesDirectory)'
          xmlTransformationRules: 
          jsonTargetFiles: './ResourceGroup/resourceGroup.parameters.json'
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          deploymentScope: 'Subscription'
          azureResourceManagerConnection: 'ConnectionName'
          subscriptionId: 'GUID'
          location: 'East US'
          templateLocation: 'Linked artifact'
          csmFile: '$(Build.SourcesDirectory)/ResourceGroup/resourceGroup.json'
          csmParametersFile: '$(Build.SourcesDirectory)/ResourceGroup/resourceGroup.parameters.json'
          deploymentMode: 'Incremental'
      - task: PublishBuildArtifacts@1
        inputs:
          PathtoPublish: '$(Build.SourcesDirectory)'
          ArtifactName: 'master'
          publishLocation: 'Container'

因此,我采用我想要的版本,将其写入JSON文件,该文件将在我的发布管道中提供。

也许我不是很清楚,请告诉我如何改进我的问题。我不想在我的MajorminoPatch字符串上使用alpha.70。但是,当我运行管道时,它仍然被传递给内部版本号。@BigDevJames感谢您共享Gitversion.yml。我使用构建管道和gitversion.yml进行了测试,发现
'$($gitversion\u MAJORMINORPATCH)
无法获取版本值,
$env:version
无法引用变量
version
。我更新了上面的答案。请查看。您好@BigDevJames。您是否尝试了以下更新的答案。似乎需要使用$(GitVersion.MajorMinorPatch)来引用GitVersion。并使用$(版本)更新内部版本号。如果有任何问题,请告诉我。我确实尝试过,但我的版本号上仍然有字符串。我仍然希望找出原因。为了进行故障排除,您是否可以尝试在powershell和脚本任务中向这些变量的输出值添加write host命令,以检查是否已为这些变量分配了正确的值?