问题标签 [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.
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。
git - 使用 GitVersion 查看版本指向哪个提交
是否可以使用GitVersion准确查看特定版本指向的提交,例如 1.7.0-unstable144 是版本 X?
因此,逆转标记特定提交而不是从版本中获取提交是正常的工作。
值得注意的是,这个版本没有匹配的标签。
gitversion - 为预发布设置 GitVersion
我在 GitHub 上创建了一个新项目,我计划将其部署到 NuGet.org。
我想让初始版本“预发布”(通过主分支的 AppVeyor 构建)。
我曾经gitversion init
生成 GitVersionConfig.yaml。这个过程表明它会创建一个详细的文件,其中大部分内容都被注释掉了,但实际上它只是创建了这个:
我需要改变什么才能得到想要的结果?
git - 什么可以使 gitversion 在同一分支上计算不同的版本(本地与构建代理存储库)
我有一个提交并同步到 TFS 2015 的分支。
在构建代理上运行构建时,执行的 gitversion 命令会计算不同的版本。
在本地,我根据标签 3.10.0.202 得到 3.11.0
在构建代理上,我得到 0.1.0
我觉得这种变化可能与如何在构建代理上完成克隆有关。任何人都可以建议这是否可能以及可能有什么区别?
注意
git - Git 版本总是将 prerelase 标签设置为“不稳定” - 如何使其尊重配置文件?
我一生都无法弄清楚如何将PreReleaseLabel
Alpha 或 GitVersionConfig.yaml 中的任何内容更改为 Alpha。有没有办法让 gitversion 追踪它的想法?
这是我的 gitversion 输出:
GitVersion.exe
或者
GitVersion.exe /输出构建服务器
这是我的 GitVersionConfig.yaml 文件
git - 一次构建,多次使用 gitflow 和 gitversion 部署
gitflow 适合我们的需求,而 giversion 似乎也适合 gitflow。但有一件事我并不完全理解。让我解释一下困扰我的事情。
- 我们确实在开发分支上开发了一些功能——所有的包都被标记为 1.3.0-unstable.1、1.3.0-unstable.2 等等。
- 每个包都通过管道 - dev、test、uat、prod。
- 所以当开发准备好并且一切都很好时,根据 gitflow 我们启动发布分支。
- 发布时不需要做任何更改,我们马上就完成了——发布分支合并到主分支和开发分支中。
- 构建服务器再创建一个包 1.3.0,这是一种产品准备就绪。
这里如何实现一次构建,多次部署?根据所有规则,我们需要将 1.3.0-unstable.x 升级到 prod 环境,因为这个包在 dev 和 test 中测试过,但是对于 prod 来说,版本看起来有点奇怪,不是吗?当来自 master 分支的 1.3.0 从未在任何地方部署时。
问题与此类似:在 git flow 模型中,我应该从 master 中的合并提交构建到发布吗?
答案并不令人满意:
- 我们在合并到 master 时执行 -no-ff
- 它仍然是一个不同的包
f# - 如何使用 GitVersion 环境变量
我有一个我曾经通过 AppVeyor 构建的项目。构建顺序如下:
- 安装并运行 GitVersion
- 构建项目
- 使用评估的版本号创建包。
最后一步由 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 作为目标并取回版本号。
.net - GitVersion:Octopus Deploy 在 Nuget 包版本上拒绝了多个候选版本
我正在使用GitVersion对正在构建的 .net 产品进行语义版本控制。在针对特定版本的工作期间,我通常会将多个候选版本部署到“开发”和“暂存”环境。
当我尝试通过Octopus Deploy进行部署时,结果发现所有候选版本都共享相同的 Nuget 包版本。因此,Octopus 与第一个候选版本配合得很好,但拒绝接受以下 RC。
使 Nuget 包版本反映候选版本之间的差异以便 Octopus 将它们接受到其 Nuget 商店的最佳方法是什么?
额外细节:
- 我正在使用 GitHub Flow,因此只有 master 和 feature 分支以及部署始终来自 master。
- 我的构建工具是 TeamCity。
.net - 为什么 GitVersion “跳过获取”,我怎样才能让它不跳过?
我已将GitVersion设置为我的 TeamCity 构建配置中的构建步骤。
- 鉴于 master 上的最新版本标签是 v1.2.3
- TeamCity 基于 master 上的最新提交运行构建
- 当我稍后使用新版本标签标记该提交时:v1.2.4
- 然后当我手动运行 TeamCity 构建时,GitVersion 会忽略新版本标签并再次输出以前的版本。
在构建日志中,我看到以下消息:
INFO [05/10/16 7:52:05:74] 跳过获取,如果 GitVersion 没有按预期计算您的版本,您可能需要允许获取或使用动态存储库
为什么 GitVersion 跳过获取?我怎样才能“允许获取”?
笔记:
- VCS 根配置为“在客户端自动”运行。
- GitVersion 构建步骤基于GitVersion TeamCity meta-runner。
我宁愿不使用动态存储库,因为我想了解发生了什么。
更新:
即使我使用动态存储库,我也会得到完全相同的行为。:(
json - 在提交时使用 gitversion 更新 manifest.json 版本
我有一个包含 manifest.json 的 Google Chrome 扩展程序。最近我开始使用 gitversion,我喜欢它。有没有一种方法可以在 gitversion 中更改时巧妙地增加 manifest.json 中的版本?