标签: gitversion

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

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

  1. 我们在开发分支上做了一些功能上的工作-所有软件包都标记为1.3.0-unstable.1、1.3.0-unstable.2,依此类推。
  2. 每个软件包都将通过管道-开发,测试,测试,生产。
  3. 因此,当开发人员准备就绪并且一切都很好时,根据gitflow我们启动了release分支。
  4. 发行时不需要做任何更改,我们会立即完成它-发行分支已合并到主版本和开发中。
  5. 构建服务器会再创建一个软件包1.3.0,该软件包已准备就绪。

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

问题是这样的:在git flow模型中,我应该从master的merge提交构建到发布吗?

答案并不十分令人满意:

  1. 我们在与主人合并时不做-ff
  2. 还是一个不同的包裹

git git-flow gitversion

5
推荐指数
1
解决办法
985
查看次数

GitVersion在Jenkins Multibranch Pipeline工作中

我们使用Jenkins CI并且最近一直在尝试使用GitVersion来自动生成SemVer版本号.但是,当将GitVersion与Multibranch Pipeline作业(自动为给定的Git存储库自动构建分支和PR)组合时,我们只会遇到GitVersion对一个远程的限制(由其NormalizeGitDirectory函数强制执行).我们遇到的具体错误是:

System.ComponentModel.WarningException:已检测到2个遥控器.当在构建服务器上运行时,Git存储库应该承载一个(并且不超过一个)远程.

我们已经找到了唯一的解决方案(如博客这里)是手动删除"origin1"单片机结账后,遥控器,前,将调用GitVersion,像这样任何构建步骤:

bat 'git remote remove origin1'
Run Code Online (Sandbox Code Playgroud)

这有效,但感觉非常像黑客,并且可能不适用于任何来自源代码的PR.

那里有更好的解决方案吗?

git jenkins gitversion

5
推荐指数
1
解决办法
792
查看次数

如何为发布流程配置 GitVersion?

我正在尝试配置 GitVersion 以使用发布流分支策略。

在此输入图像描述

基本上,我有一个主线 Master 分支、Release、Feature 和 Fix 分支。功能和修复分支是从主分支创建的,并通过拉取请求合并回主分支。在冲刺结束时,我从 Master 创建一个发布分支,该分支将持续到下一个冲刺结束,届时将创建一个新的发布分支。Release 分支不会合并回 master 分支。它们甚至可以在创建新的发布分支后被删除。如果需要修补程序,它将在从创建并合并回 master 的 Fix 分支上开发,然后精心挑选到当前的 Release 分支中。我只在主要版本中使用 git 标签。

回到 GitVersion,我想对其进行配置,以便在创建新的发布分支时次要版本号会增加,并且当发布分支上有新的提交(从修复分支中挑选)时补丁号会增加。

有人已经这样做并且可以帮助我吗?

git branching-strategy gitversion

4
推荐指数
1
解决办法
3242
查看次数

GitVersion 的 +semver 命令如何工作?

我正在尝试使用GitVersion+semver:patch命令来更改我的补丁版本号,但它没有按我预期的方式工作。

我的master分支上有一个标签“2.2.0”。我在我的开发分支上做出了以下承诺:

b5d9f141  (HEAD -> develop, origin/develop) +semver:patch
75122489  Added unit test. +semver:patch
3b4e7eef  (tag: 2.2.0, origin/master, master) Merge branch 'release/2.2.0'
Run Code Online (Sandbox Code Playgroud)

我正在关注GitFlow。在最近两次提交之后,我希望我的版本报告为 2.3.2,但 GitVersion 仍然将其报告为 2.3.0。

"主要次要补丁":"2.3.0"

它是如何+semver工作的,有没有什么方法可以按照我想要的方式仅使用提交消息来提高活动版本号(即无需手动标记)?

git git-flow gitversion

4
推荐指数
1
解决办法
1056
查看次数

将GitVersion设置为预发布

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

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

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

mode: ContinuousDeployment
branches: {}
Run Code Online (Sandbox Code Playgroud)

我需要更改什么才能获得所需的结果?

gitversion

3
推荐指数
1
解决办法
581
查看次数

Mono Repository具有多种服务和独特的版本控制

我想看看是否有一种方法可以在Mono存储库中找到唯一版本的微服务.

使用GitVersion和多个存储库,微服务版本是独一无二的.

使用GitVersion和Mono Repositories,微服务将为整个repo共享相同的版本.

有没有办法让Mono Repository Model遵循Multiple Repository模型的版本控制风格?

versioning git gitversion

3
推荐指数
1
解决办法
240
查看次数

GitVersion.Tool 和 GitVersionTask 有什么区别

我看到有两个 nuget 包GitVersion.ToolGitVersionTask

两者有什么区别,什么时候用。

我也看到GitVersion,但看起来这已被弃用,因为上次更新是两年半前。所以让我们忽略它。

gitversion

3
推荐指数
1
解决办法
2883
查看次数

从生产分支合并到主分支时如何在 Gitlab CI/CD 中增量版本或标记

我正在处理一个项目,我想标记或提供版本号。当合并发生并且我的 CI/CD 成功运行时,我希望 gitlab 在我的 gitci.yml 文件中标记 V 1.0、1.1 等。

versioning git git-tag gitlab gitversion

3
推荐指数
1
解决办法
1万
查看次数

为什么使用 GitVersion 时补丁版本不自动递增?

我正在使用 Azure 管道通过 GitVersion 设置版本号。这是管道:

    - task: gitversion/setup@0
      displayName: 'Setup GitVersion'
      inputs:
        versionSpec: '5.x'
    
    - task: gitversion/execute@0
      displayName: 'Run GitVersion'
      inputs:
        useConfigFile: true
        configFilePath: 'GitVersion.yml'
Run Code Online (Sandbox Code Playgroud)

它似乎运行没有任何问题,但补丁号从未增加。+semver: patch当我添加到提交消息时它也不起作用。

FullSemVer似乎受到了影响:0.8.0+11
但我期待:0.8.11

这是GitVersion.yml文件

next-version: 0.7.0
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
assembly-informational-format: '{InformationalVersion}'
mode: ContinuousDelivery
increment: Patch
continuous-delivery-fallback-tag: ci
tag-prefix: '[vV]'
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
commit-date-format: 'yyyy-MM-dd'
ignore:
  sha: []
merge-message-formats: {}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

gitversion azure-pipelines

3
推荐指数
1
解决办法
3878
查看次数

GitVersion.yml 文件理解

branches:
  main:
    regex: ^master$|^main$
    mode: ContinuousDelivery
    tag: ''
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    tracks-release-branches: false
    is-release-branch: false
  release:
    regex: ^releases?[/-]
    mode: ContinuousDelivery
    tag: beta
    increment: Patch
    prevent-increment-of-merged-branch-version: true
    track-merge-target: false
    tracks-release-branches: false
    is-release-branch: true
    pre-release-weight: 1000
  feature:
    regex: ^features?[/-]
    mode: ContinuousDelivery
    tag: useBranchName
    increment: Inherit
    prevent-increment-of-merged-branch-version: false
    track-merge-target: false
    tracks-release-branches: false
    is-release-branch: false
  pull-request:
    regex: ^(pull|pull\-requests|pr)[/-]
    mode: ContinuousDelivery
    tag: PullRequest
    increment: Inherit
    prevent-increment-of-merged-branch-version: false
    tag-number-pattern: '[/-](?<number>\d+)[-/]'
    track-merge-target: false
    tracks-release-branches: false
    is-release-branch: false
  hotfix:
    regex: ^hotfix(es)?[/-]
    mode: ContinuousDelivery
    tag: beta …
Run Code Online (Sandbox Code Playgroud)

git version gitversion devops

3
推荐指数
1
解决办法
1万
查看次数

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

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

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

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

本地仓库给出 3.11.0

在构建代理上我得到 0.1.0

构建服务器存储库给出 3.11.0

我觉得这种变化可能与克隆在构建代理上的完成方式有关。谁能建议这是否可能以及可能有什么区别?

注意

  • 构建代理只是目前在我的计算机上运行的 TFS 2015 构建代理。
  • 在没有 fetch 的情况下运行命令会产生相同的结果
  • 这是标签标签
  • 错误的版本号位于构建服务器上(通过 TFS 构建),但我也使用命令行重现了它。我只发布了后者,因为它给出了结果。当我下次能够登录服务器时,我可以发布 TFS 构建输出的示例。第二个示例 (D:) 中的存储库是使用 TFS 构建克隆的,而第一个示例 (C:) 是使用 VS 2015 克隆的。

git tfs-2015 gitversion

2
推荐指数
1
解决办法
1316
查看次数

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

我正在尝试将我的 Azure DevOps Pipeline 的内部版本号从 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'
Run Code Online (Sandbox Code Playgroud)

问题是当我运行我的管道时,我得到一个管道名称,如: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: …
Run Code Online (Sandbox Code Playgroud)

semantic-versioning gitversion azure-devops azure-pipelines azure-devops-extensions

2
推荐指数
1
解决办法
7135
查看次数

Gitversion 无法获取 JSON 数据

我正在开发一个基于此存储库的项目

(我会问有关它的问题,但它很陈旧......)

我正在尝试执行任务,创建管道,但在此步骤中失败:

          - pwsh: |
              dotnet tool install --global GitVersion.Tool

              Write-Output ">>>>>>>>>>>>>>>>"
              dotnet-gitversion
              Write-Output "<<<<<<<<<<<<<<<<"

              $gitVersionObject = dotnet-gitversion | ConvertFrom-Json
              $gitVersionObject.PSObject.Properties.ForEach{
                  Write-Host -Object "Setting Task Variable '$($_.Name)' with value '$($_.Value)'."
                  Write-Host -Object "##vso[task.setvariable variable=$($_.Name);]$($_.Value)"
              }
              Write-Host -Object "##vso[build.updatebuildnumber]$($gitVersionObject.FullSemVer)"
            displayName: Calculate ModuleVersion (GitVersion)
Run Code Online (Sandbox Code Playgroud)

我发现这是 gitversion 的问题(也尝试了 AZ 任务中的 gitversion 任务)


  INFO [09/23/22 11:30:47:90] HEAD points at branch 'refs/heads/gitversion-v5'.
  INFO [09/23/22 11:30:47:90] End: Normalizing git directory for branch 'refs/heads/gitversion-v5' (Took: 90.63ms)
  INFO [09/23/22 11:30:47:91] Begin: Loading version variables from disk …
Run Code Online (Sandbox Code Playgroud)

json gitversion azure-devops powershell-core

2
推荐指数
1
解决办法
1283
查看次数