我有一个ConcourseCI管道,它使用以下资源类型自动增加版本号:https://github.com/concourse/semver-resource
我的资源声明如下:
- name: version
type: semver
source:
driver: git
initial_version: 0.0.1
uri: {{version-repo-uri}}
branch: {{version-repo-branch}}
file: {{version-file}}
private_key: {{git-key}}
我的工作看起来像这样:
- name: increment-version
plan:
- get: {{git-repo-name}}
trigger: true
- get: version
params: {bump: patch}
- put: version
params: {file: version/version}
因此,正如您所看到的,现在我总是在碰补丁版本。但是,我希望管道可以根据情况增加主要,次要,补丁或RC版本的简便且自动化的方式。
是否有一个git hook或类似的东西会知道什么时候碰到什么?将semver自动化到管道中时,是否有任何实现最佳实践?我应该使用其他任何Concourse资源类型吗?还是我们绝对应该让人决定的事情?在那种情况下,如何轻松地将“手动”步骤集成到CD管道中?
我能想到的最接近的事情是在我的项目(提交给github)中有一个带有预期版本的版本文件,该文件将设置MAJOR,MINOR,PATCH编号。管道会拾取该文件,以某种方式将其用作基础,并且只会增加RC编号,但这容易出错。
要清楚,我不是在理论上问版本发行版,也不是主要,次要或补丁的含义。我在实践中问如何实施https://semver.org/中列出的建议。
答案 0 :(得分:0)
我对这个问题的解决方案是标记提交,以及一个脚本,该脚本读取Git提交消息并根据内容逐步确定版本:
如果当前提交中存在版本标记:始终执行步骤PATCH。
其他:
列出所有提交,直到上一个标记为止。
这意味着如果提交者在消息中未声明任何内容,则该更改被认为是功能更改。
在构建的工件分发之前,标记并推送提交。否则,下一个版本可能会产生一个已经存在的版本。
只需根据用例修改逻辑。