问题标签 [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 投票
1 回答
1145 浏览

git - 使用 GitVersion 作为 TeamCity 中的构建步骤与私有存储库的连接错误

我正在为我正在处理的项目配置 CI 环境,但我遇到了困难。在我在这里描述问题之前,我使用的工具和技术堆栈是:

  • Teamcity 8.1.5 作为构建服务器,
  • Git 作为源代码版本控制,
  • GitFlow 作为 Git 工作流,
  • TFS 2013 作为一个协作项目(绑定了 Git 存储库),
  • GitVersion 作为标记程序集和发布的工具。

TFS 服务器同时支持:NTLM 和基本身份验证。

场景:

我想使用 GitVersion 工具在每个构建中自动标记源。这就是为什么作为第一个构建步骤,我使用命令添加了命令行步骤:

存储库 url 由 GitVersion 自动从[checkout-dir]\.git\config.

不幸的是,当我运行构建时,我收到一个异常:

LibGit2Sharp.LibGit2SharpException: Request failed with status code: 401

这是构建日志的输出:

而且我无法弄清楚它有什么问题。

当我直接从 Build Agent 机器上的 CMD 运行相同的命令时,它执行得非常好。

我已经尝试过的:

  • 验证构建步骤命令在与我在 CMD 中手动尝试的命令相同的身份下运行,
  • 将存储库凭据添加到 Windows 凭据存储,
  • 使用 /url 开关将 url 直接传递给 GitVersion
  • 将用户名作为 url 的一部分传递:http://Domain\UserName@tfs-server-url\projectname但失败并出现不同的错误:Malformed URL "http://Domain\UserName@tfs-server-url\projectname"
  • 成功调用git fetch作为构建步骤(检查凭据是否正常),
  • 使用谷歌,但我没有发现类似的问题。

有没有人遇到过类似的问题?你会建议做什么?GitVersion 似乎别无选择。恐怕唯一的解决方法是关心手工标记,这不方便,尤其是使用 GitFlow。

0 投票
1 回答
53 浏览

git - 使用 GitVersion 查看版本指向哪个提交

是否可以使用GitVersion准确查看特定版本指向的提交,例如 1.7.0-unstable144 是版本 X?

因此,逆转标记特定提交而不是从版本中获取提交是正常的工作。

值得注意的是,这个版本没有匹配的标签。

0 投票
1 回答
772 浏览

gitversion - 为预发布设置 GitVersion

我在 GitHub 上创建了一个新项目,我计划将其部署到 NuGet.org。

我想让初始版本“预发布”(通过主分支的 AppVeyor 构建)。

我曾经gitversion init生成 GitVersionConfig.yaml。这个过程表明它会创建一个详细的文件,其中大部分内容都被注释掉了,但实际上它只是创建了这个:

我需要改变什么才能得到想要的结果?

0 投票
1 回答
1037 浏览

git - 什么可以使 gitversion 在同一分支上计算不同的版本(本地与构建代理存储库)

我有一个提交并同步到 TFS 2015 的分支。

在构建代理上运行构建时,执行的 gitversion 命令会计算不同的版本。

在本地,我根据标签 3.10.0.202 得到 3.11.0

本地仓库提供 3.11.0

在构建代理上,我得到 0.1.0

构建服务器 repo 提供 3.11.0

我觉得这种变化可能与如何在构建代理上完成克隆有关。任何人都可以建议这是否可能以及可能有什么区别?

注意

  • 构建代理只是目前在我的机器上运行的 TFS 2015 构建代理。
  • 在没有 fetch 的情况下运行命令会得到相同的结果
  • 这是标签标签
  • 错误的版本号在构建服务器上(通过 TFS 构建),但我也使用命令行复制了它。我只发布了后者,因为它给出了结果。当我下次能够登录服务器时,我可以发布 TFS 构建输出的示例。第二个示例 (D:) 中的 repo 是使用 TFS 构建克隆的,而第一个 (C:) 是使用 VS 2015 克隆的。
0 投票
1 回答
1435 浏览

git - Git 版本总是将 prerelase 标签设置为“不稳定” - 如何使其尊重配置文件?

我一生都无法弄清楚如何将PreReleaseLabelAlpha 或 GitVersionConfig.yaml 中的任何内容更改为 Alpha。有没有办法让 gitversion 追踪它的想法?

这是我的 gitversion 输出:

GitVersion.exe

或者

GitVersion.exe /输出构建服务器

这是我的 GitVersionConfig.yaml 文件

0 投票
1 回答
1861 浏览

git - 一次构建,多次使用 gitflow 和 gitversion 部署

gitflow 适合我们的需求,而 giversion 似乎也适合 gitflow。但有一件事我并不完全理解。让我解释一下困扰我的事情。

  1. 我们确实在开发分支上开发了一些功能——所有的包都被标记为 1.3.0-unstable.1、1.3.0-unstable.2 等等。
  2. 每个包都通过管道 - dev、test、uat、prod。
  3. 所以当开发准备好并且一切都很好时,根据 gitflow 我们启动发布分支。
  4. 发布时不需要做任何更改,我们马上就完成了——发布分支合并到主分支和开发分支中。
  5. 构建服务器再创建一个包 1.3.0,这是一种产品准备就绪。

这里如何实现一次构建,多次部署?根据所有规则,我们需要将 1.3.0-unstable.x 升级到 prod 环境,因为这个包在 dev 和 test 中测试过,但是对于 prod 来说,版本看起来有点奇怪,不是吗?当来自 master 分支的 1.3.0 从未在任何地方部署时。

问题与此类似:在 git flow 模型中,我应该从 master 中的合并提交构建到发布吗?

答案并不令人满意:

  1. 我们在合并到 master 时执行 -no-ff
  2. 它仍然是一个不同的包
0 投票
2 回答
2461 浏览

f# - 如何使用 GitVersion 环境变量

我有一个我曾经通过 AppVeyor 构建的项目。构建顺序如下:

  1. 安装并运行 GitVersion
  2. 构建项目
  3. 使用评估的版本号创建包。

最后一步由 PowerShell 命令完成:

如您所见,版本取自 GitVersion 定义的环境变量。现在我想将构建迁移到 FAKE 构建脚本。

我在我的脚本中定义了这些依赖项。

Git 版本步骤很简单。

我可以在我的日志中看到变量是由 GitVersion 设置的。

添加环境变量。名称='GitVersion_SemVer' 值='1.1.1-xxx'

下一步是创建包。

我正在打印所有定义的变量,之后我试图通过读取变量并将其分配给version.

不幸version的是,当我运行构建时,它仍然是空的。添加TraceEnvironmentVariables()方法调用后,我可以看到 GitVersion 定义的变量都没有出现在输出中。

正如 John Palmer 和dustinmoris 所说,流程开始于Shell.Execute将所有变量设置为流程级变量。

有没有办法Shell.Execute让进程可以设置全局范围的环境变量?

UPD

作为一种解决方法,我在AppVeyor.yml配置文件中添加了额外的步骤:

在这种情况下,变量设置在全局范围内,我可以获取它们并在我的构建脚本中使用。

显然,PowerShell 以不同的方式启动 GitVersion。我想,我应该在我的构建脚本中以某种方式模仿它。

所以我的问题还是一样,如何在我的脚本中使用 GitVersion 作为目标并取回版本号。

0 投票
2 回答
202 浏览

.net - GitVersion:Octopus Deploy 在 Nuget 包版本上拒绝了多个候选版本

我正在使用GitVersion对正在构建的 .net 产品进行语义版本控制。在针对特定版本的工作期间,我通常会将多个候选版本部署到“开发”和“暂存”环境。

当我尝试通过Octopus Deploy进行部署时,结果发现所有候选版本都共享相同的 Nuget 包版本。因此,Octopus 与第一个候选版本配合得很好,但拒绝接受以下 RC。

使 Nuget 包版本反映候选版本之间的差异以便 Octopus 将它们接受到其 Nuget 商店的最佳方法是什么?

额外细节:

  • 我正在使用 GitHub Flow,因此只有 master 和 feature 分支以及部署始终来自 master。
  • 我的构建工具是 TeamCity。
0 投票
1 回答
1635 浏览

.net - 为什么 GitVersion “跳过获取”,我怎样才能让它不跳过?

我已将GitVersion设置为我的 TeamCity 构建配置中的构建步骤。

  1. 鉴于 master 上的最新版本标签是 v1.2.3
  2. TeamCity 基于 master 上的最新提交运行构建
  3. 当我稍后使用新版本标签标记该提交时:v1.2.4
  4. 然后当我手动运行 TeamCity 构建时,GitVersion 会忽略新版本标签并再次输出以前的版本。

在构建日志中,我看到以下消息:

INFO [05/10/16 7:52:05:74] 跳过获取,如果 GitVersion 没有按预期计算您的版本,您可能需要允许获取或使用动态存储库

为什么 GitVersion 跳过获取?我怎样才能“允许获取”

笔记:

  • VCS 根配置为“在客户端自动”运行。
  • GitVersion 构建步骤基于GitVersion TeamCity meta-runner
  • 我宁愿不使用动态存储库,因为我想了解发生了什么

更新:
即使我使用动态存储库,我也会得到完全相同的行为。:(

0 投票
1 回答
587 浏览

json - 在提交时使用 gitversion 更新 manifest.json 版本

我有一个包含 manifest.json 的 Google Chrome 扩展程序。最近我开始使用 gitversion,我喜欢它。有没有一种方法可以在 gitversion 中更改时巧妙地增加 manifest.json 中的版本?