问题标签 [gitversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1963 浏览

.net - 带有版本的 dotnet 构建在 docker 中不起作用

我正在尝试使用 Docker 构建我的 .net 核心应用程序。我想在 build 覆盖我的应用程序版本。在运行时稍后的某个地方显示它。

我的 Docker 文件如下所示:

当我在我的 Windows 机器上尝试 RUN 指令中的相同命令时 - 一切正常。我还尝试在 WSL(Ubuntu 18)上运行相同的命令,这也很好——我的构建命令有汇编版本。但我不明白为什么它在 Docker 中不起作用。

我也试图删除我所有的 GitVersion 魔法并使用这个:

无论如何,我的结果是一样的。

我使用此代码检查:

每次我的构建成功但我在 .csproj 文件中定义了没有覆盖的版本。

0 投票
0 回答
261 浏览

.net - Gitversion 4.0.0 无法正确生成内部版本号

在这里,我附上了日志(由 Gitversion 4.0.0 生成的 version.log 和 yaml 文件”

内部版本号假设为 2.16.0.************,但是它给出的内部版本号为 6.5.0.************

有人可以帮助我吗?

2019-03-01 08:57:41 信息 [03/01/19 8:57:41:16] 工作目录:. 2019-03-01 08:57:41 INFO [03/01/19 8:57:41:47] 开始:计算基本版本 2019-03-01 08:57:41 INFO [03/01/19 8:57 :41:91] 后备基本版本:0.1.0,提交计数源为 560f003c8bc72132a496ea12b6196e96740ec6cb(增量:无)2019-03-01 08:57:42 INFO [03/01/19 8:57:42:87] Git 标签' 2.15.0-rc':2.15.0-rc,提交计数源为 92ceb82c527ae7f44ae0dd1cf13d9a60cd0d7557(增量:2.15.0-rc)2019-03-01 08:57:42 INFO [03/01/19 8:57:42:89 ] Git 标签'2.15.0':2.15.0 与提交计数源 a3b36f14fb7348ae2d06b9c234a7dc46be76c5fe(增量:2.16.0)2019-03-01 08:57:42 INFO [03/01/19 8:57:42:92] Git标签“2.10.0”:2.10.0,提交计数源 dbd832560f61a6730561c24b3e61a0dc757a19a8(增量:2.11.0)2019-03-01 08:57:42 INFO [03/01/19 8:

将 2.10.0 版合并到 Master

和 yml 文件 Major: 6 Minor: 5 Patch: 0 PreReleaseTag: alpha.11252 PreReleaseTagWithDash: -alpha.11252 PreReleaseLabel: alpha PreReleaseNumber: 11252 BuildMetaData: '' BuildMetaDataPadded: '' FullBuildMetaData: Branch.develop.Sha.340e3df41e6bfb5bb28c4c04102c23MinerPatch66567. 0 SemVer:6.5.0-alpha.11252 LegacySemVer:6.5.0-alpha11252 LegacySemVerPadded:6.5.0-alpha11252 AssemblySemVer:6.5.0.0 AssemblySemFileVer:6.5.0.0 FullSemVer:6.5.0-alpha.11252 InformationalVersion:6.5.0-alpha .11252+Branch.develop.Sha.340e3df41e6bfb5b28c4c0dac2c23eb661574100 BranchName: develop Sha: 340e3df41e6bfb5b28c4c0dac2c23eb661574100 ShortSha: 340e3df NuGetVersionV2: 6.5.0-alpha11252 NuGetVersion: 6.5.0-alpha11252 NuGetPreReleaseTagV2: alpha11252 NuGetPreReleaseTag: alpha11252 CommitsSinceVersionSource:11252 CommitsSinceVersionSourcePadded:11252 CommitDate:2019-03-01

0 投票
1 回答
835 浏览

azure-devops - Cake Build 脚本中的 GitVersion 任务在运行时缺少 Azure DevOps 上的库

当我在本地运行时,GitVersion 任务工作正常并运行。在 Azure DevOps 构建管道中,相同的脚本失败。我收到以下错误:

它似乎涉及不存在的LibGit2Sharp.Core.NativeMethods库。我认为如果我包含以下内容,Cake 项目会下载所需的 dll:

在 Cake 构建脚本中。

我的 GitVersion 任务代码是:

我在 Azure DevOps 托管生成代理中未包含的代码中缺少什么?

0 投票
1 回答
2078 浏览

git - 如何使用 Azure Devops 和 Cake Build 在构建时自动标记和版本?

我正在使用 Cake 脚本通过持续集成在 Azure DevOps 中构建我的软件。要求是当我们提交/合并到 dev 或 master 分支时,适当的构建管道被启动。作为此构建的一部分,我们需要自动标记和版本我们的软件。我的蛋糕脚本中已经有以下代码,可以使用 GitVersion 将语义版本控制添加到我的构建中:

我希望团队负责人或权威人士在此代码与分支合并之前增加主要和次要构建版本。或者我希望管道自动对软件和我们在构建管道结束时创建的最终 zip 工件进行版本控制。

所以这是我的问题:

  1. 如何自动增加我的版本号和标签?
  2. 我应该避免自动递增吗?
  3. 如何在 Azure DevOps 构建过程中将版本号添加到我的项目名称中?
  4. 我需要在我的 git 版本代码中进行哪些更改才能使用这些标签?
  5. 如何添加后缀以使版本控制和标记更像“git flow”(例如“预发布”等)?

我这有点宽泛,但我很难找到在 Cake Build 中使用 git 版本控制和 git 标记并将其以有意义的方式连接到 Azure DevOps 的任何示例。提前致谢。

0 投票
1 回答
34 浏览

arduino - 有没有办法在构建过程中使用 GitVersion 来“版本标记”一个 Arduino 项目?

我为基于 Arduino 硬件的设备创建固件。我在 Visual Studio 中使用 Visual Studio 和Visual Micro插件来支持 Arduino。

使用 GitVersion(或类似的东西)为每个构建创建一个版本会很方便。但是,Arduino 项目使用自己的构建系统,不依赖于 MSBuild。

有谁知道将 GitVersion “挂钩”到 Visual Micro Arduino 构建中的方法?

0 投票
1 回答
2348 浏览

git - 如何在使用 gitversion 修复错误后自动增加补丁版本

概括

我正在建立一个新项目并想使用 GitVersion 来计算我的应用程序的当前版本。我需要的是使用 MAJOR.MINOR.PATCH 进行语义版本控制,其中 MAJOR 和 MINOR 会随着发布分支名称的增加而增加,并且 PATCH 在每个错误修复或修补程序合并时都会增加。

目前我正在尝试将 GitFlow 实施到我的分支策略中,但我会解释一下我在做什么。

  1. 所有开发都在develop分支上完成(创建一个feature/*分支并合并回develop
  2. 当我想创建一个发布时,我从开发创建一个发布/[版本]分支
  3. 当我在发布中发现错误时,我会创建一个bugfix/*分支,并在完成后将其合并回发布/[版本]
  4. 当没有发现更多错误时,releases/[version]将被合并到 master 中并用正确的版本标记。

问题出在第 3 步。例如,当我在release/0.1.0上时,GitVersion 在错误修复/*合并后不会增加 PATCH 版本。它只是停留在 0.1.0 而不是想要的 0.1.1。它确实增加了提交计数!

迄今为止采取的步骤

目前我正在使用以下 gitversion.yml 文件(见下一个标题)。其中包括一个应该增加 PATCH 的修补程序分支。出于某种原因,在我创建bugfix/*分支后,当您在 bugfix 分支上运行 GitVersion 时,它不会增加 PATCH,所以我认为我在这里遗漏了一些东西。

唯一有效的方法是在bugfix/*分支的最后一次提交上设置标签到新版本(0.1.1-test)。但由于 GitVersion 在 bugfix 分支上计算版本 0.1.0,我无法自动升级 PATCH 并在提交时添加所需的 0.1.1-test 标签。

我还认为当您合并回发布分支时,GitVersion 会增加版本。但即使我将增量设置为 Patch,这种情况也不会发生。所以在这里,我想我错过了一些东西,或者我只是想要一些 GitVersion 不适合的东西。

gitversion.yml

预期结果

当我将bugfix/*分支合并回我的release/[version]分支时,我希望增加 PATCH。

例子:

[1] 此时我创建了releases/0.1.0 分支,所以GitVersion 应该计算0.1.0(有效!)

[2] 这里版本无关紧要,所以它可以保持 0.1.0-bug

[3] 这里版本需要增加到 0.1.1,因为我们有一个错误修复合并。(这不会发生!)。目前它保持 0.1.0 但确实增加了提交计数。所以它将在 [1] 和 [3] 之间从 0.1.0-test.0 变为 0.1.0-test.2。

也许我正在尝试做一些甚至不可能的事情,我真的不知道。因此,如果有人有任何想法,请随时回复:)

我也知道 GitFlow 默认没有错误修复分支。但是我认为直接在发布分支上修复错误是一个奇怪的想法。尤其是当你在一个更大的团队中工作时。这就是我尝试创建错误修复流程的原因。

完整的 gitversion -diag 输出

最后,您可以看到它正在跳过版本增量。但我不知道为什么。

0 投票
1 回答
699 浏览

azure-devops - 如何在 Azure DevOps 和 Cake 中获取唯一的内部版本号?

我正在使用 Cake Build 脚本来构建我们的 .NET 软件,我需要一个唯一的构建号来烘焙到 DLL 中,主要是因为我们需要知道我们使用的确切二进制文件,以防我们需要使用二进制文件调试转储文件。

首先,这是我当前的 Cake 版本任务:

非常简单,但它使用正确的 FileVersion 和 ProductVersion 更新程序集文件,从而更新 DLL。

其次,我发现 Azure DevOps 中的内部版本号无处不在。以下是一些示例:

这些是最后 7 个内部版本号,它们来自不同分支的内部版本,包括将修补程序合并到 master 和 dev 中。我注意到这个构建管道,构建号是空的,所以我认为它只是使用我的最后一组标签(到目前为止只标记了 2.0.0 和 2.0.1)将任何内容转储到构建管道中。

存在三个问题:

  1. 如何在我的 Azure DevOps 管道中获取唯一的内部版本号(我有 3 个,并且每个内部版本,无论管道如何,都必须是唯一的)?
  2. 如何在我的语义版本控制中获取唯一的内部版本号并尊重我在 Master 中的标签?
  3. 当我在 Azure DevOps 构建服务器上构建以及在我的机器上本地构建(调试)时,如何将内部版本号输入到我的 Cake 脚本中?

编辑

我发现您可以使用 $(BuildId) 获取 Azure DevOps 生成的唯一内部版本号,以便回答问题 1。我还认为我可以通过一个很好的参数将内部版本号从 Azure DevOps 传递到我的 Cake 脚本。现在更多的是本地构建以及如何为它们获取唯一构建号的问题。另外,什么格式应该保存我的版本控制。我正在尝试对标签使用 1.0.0 格式,所以我应该将第四个数字作为始终增加的内部版本号吗?应该如何将其保存到 AssemblyInfo.cs 文件中?

从我的第一次编辑开始编辑......在运行成功构建后,构建号从构建 ID 更改为其他“2.1.0-alpha.7”,我不知道为什么,因为我指定使用构建 ID我的管道。

0 投票
2 回答
406 浏览

c# - Azure Pipelines - 在 .NET Core 项目中使用从 NuGet 下载的工具

如果.NET Core 项目从 NuGet GitVersion.CommandLine获取可执行文件,如何在 Azure Pipelines 中配置构建步骤以执行命令 GitVersion.exe ?

在 .NET Framework 中可以在 path 中找到可执行文件packages/GitVersion.CommandLine/**/GitVersion.exe,但在 .NET Core 包目录中不存在。

0 投票
2 回答
1893 浏览

git - 使用 GitVersion 生成 Docker 镜像标签

我试图弄清楚如何使用 GitVersion 生成与 docker 兼容的构建 id,默认情况下 gitversion 使用如下内容:

+不能在图像标签名称中使用。我在 GitVersion 文档下发现的唯一合理的东西是NuGetVersionV2变量,它似乎替换+-,但我想知道如何更好地控制 gitversion 如何为提交生成“偏移量”

0 投票
2 回答
1446 浏览

gitversion - 如何告诉 Gitversion 如何从分支名称解析版本?

我的构建团队目前已设置我们的分支名称以遵循约定 Feature_*、Bugfix_*、Hotfix_*、Release_*。进行谷歌搜索时,我看到典型的命名约定使用所有小写字母,其中每个分支类型都使用破折号('-')或文件夹('/')标记,而不是我在这里使用的下划线('_')分隔符。在大多数情况下,我可以在 Gitversion.yml 文件中使用正则表达式,以便 gitversion 可以正确识别分支类型。

但是,发布分支和 GitVersion 工具从分支名称中获取版本号的能力存在问题。这里似乎 Gitversion 工具只能在命名约定匹配release/<version>release-<version>. 但是如果我改为使用Release_<version>它,它将不会解析分支名称来获取新版本#。我已经问过构建团队我们是否可以在这里切换命名约定,但他们不愿更改命名约定,因为这可能会影响许多其他 repos 及其 Jenkins 配置。

有什么方法可以让 Gitversion 工具知道我的命名约定Release_<version>并相应地削减版本号 - 无论是使用 Gitversion.yml 还是其他方式?

我已经用正则表达式修改了 GitVersion.yml 来识别发布分支,这在识别什么是发布分支时可以正常工作。但它不会从分支名称解析建议的版本。

我的 GitVersion.yml

我希望如果我提供 Release_0.99.1 的分支名称,我应该获得 0.99.1 的版本号。而不是获得 0.1.0 的版本号。