【问题标题】:GitVersion, hotfix and pull requestsGitVersion、修补程序和拉取请求
【发布时间】:2021-04-18 02:56:55
【问题描述】:

我在 Azure DevOps 中有一个设置,并正在尝试配置 GitVersion 来执行我们的版本控制。工作正常,除了修补程序的拉取请求

示例: 修补程序分支的构建为我提供了 1.2.3-beta 版... 该修补程序分支的拉取请求开始提供 med 1.3.0-PullRequest

我希望它是 1.2.3-PullRequest。

我做错了什么??

【问题讨论】:

  • 嗨@user3164608,进展如何?您找到的方法(GitVersion.yml)是否可以帮助您解决问题?如果可行,请发布答案以分享此方法的详细信息。这可能会帮助更多正在寻找类似问题的解决方案的人。谢谢。当然,如果我的建议更好,你可以标记一下。
  • 不确定 GitVersion.yml 文件或 git 版本任务是否有问题。似乎如果我在发出触发构建的拉取请求之前构建修补程序分支,则版本号符合预期。但是,如果修补程序分支仅作为 PR 的一部分构建,则它会将次要部分计算在内,就好像它具有功能或发布一样。但是我仍然需要进行一些测试来确认这一点,只是还没有时间。
  • 感谢您的重播,@user3164608。如果您有任何进展,请随时告诉我。如果可能的话,您能否分享一下您的构建管道定义的详细信息?以便我们查看更详细的配置进行分析并提供更多帮助。

标签: azure-devops gitversion


【解决方案1】:

如何在 Pull Request 的构建管道定义中设置构建号?

根据您的 cmets,您希望 PR 的构建与 hotfix 分支的最新构建具有相同的构建号,除了后缀,对吧?

如果是这样,您可以尝试在 PR 的构建管道中设置并运行如下所示的 shell 脚本(此处以 PowerShell 为例)。

# Convernt PAT to Base64 string
$pat = "personal access token"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "", $pat)))

# Set up headers
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", ("Basic {0}" -f $base64AuthInfo))
$headers.Add("Content-Type", "application/json")

$uri = "https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitionID}&branchName=$(System.PullRequest.SourceBranch)&`$top=1&api-version=6.1-preview.6"

# Run the API and return the response body
$response = Invoke-RestMethod -Uri $uri -Headers $headers -Method GET

# Get buildNumber of the latest build for hotfix branch
$buildNumber_hotfix = $response.value[0].buildNumber
Write-Host "$buildNumber_hotfix"

# Replace the suffix
$buildNumber_PR = $buildNumber_hotfix.replace("beta","PullRequest")
Write-Host "$buildNumber_PR"

# Update the buildNumber of current build for the PR
Write-Host "##vso[build.updatebuildnumber]$buildNumber_PR"

说明:

  1. REST API“Builds - List”中的参数。

    • definitionID”是修补程序分支的构建管道的 ID。
    • 'branchName'是PR的源分支(如refs/heads/hotfix),可以直接使用predefined variable'@ 987654329@' 获取分支名称。
    • 将“$top”的值设置为1。这将让 API 调用仅返回最新版本。
  2. Logging commands - UpdateBuildNumber

【讨论】:

  • 没试过。找到了一个较旧的 GitVersion.yml 文件,现在它似乎按预期工作(大部分时间)我昨天看到了一个故障。我会继续测试,看看我是否能弄清楚。否则我会尝试你的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2021-06-16
  • 1970-01-01
  • 2013-10-27
  • 2019-08-31
  • 1970-01-01
相关资源
最近更新 更多