我正在为我们的 .Net Core 解决方案使用语义发布。Semantic-release 用作 GitLab 存储库上 CI 管道的一部分。
这是我的 .releaserc.json
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/changelog", {
"changelogFile": "CHANGELOG.md"
}],
["@semantic-release/exec", {
"publishCmd": "./publish.sh ${nextRelease.version}"
}],
"@semantic-release/gitlab"
],
"branches": [
"master",
{"name": "develop", "channel": "beta", "prerelease": "beta"},
{"name": "release", "channel": "RC", "prerelease": "RC"}
]
}
如您所见,我使用的是简化的 GitFlow。我有一个master
分支,release
用于发布候选版本的单个分支和develop
具有最新开发代码的分支。也有从中创建的功能分支,develop
但它们没有版本控制。
我遇到的问题是,一旦我将代码从任何提交合并到develop
分支将导致语义发布无法找到合并到.release
develop
release
让我试着解释发生了什么。develop
使用 squash 为功能分支(从 中创建)创建合并到,并develop
带有提交消息,feat(Products): Add tag support
此提交将导致新版本v1.10.0-beta.11
。接下来,我会将develop
分支合并到release
,这将导致1.10.0-RC.1
创建版本。接下来,我将对分支进行新的提交,develop
这将导致语义发布无法创建新版本。
[11:09:42 AM] [semantic-release] › ✔ Completed step "verifyConditions" of plugin "@semantic-release/gitlab"
[11:09:42 AM] [semantic-release] › ℹ Found git tag v1.10.0-beta.10 associated with version 1.10.0-beta.10 on branch develop
[11:09:42 AM] [semantic-release] › ℹ Found 2 commits since last release
[11:09:42 AM] [semantic-release] › ℹ Start step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[11:09:42 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: feat(Products): One commit before Add tag support
[11:09:42 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is minor
[11:09:42 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: feat(Products): Add tag support
[11:09:42 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is patch
[11:09:42 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analysis of 2 commits complete: minor release
...
[11:09:42 AM] [semantic-release] › ℹ Start step "prepare" of plugin "@semantic-release/exec"
[11:09:42 AM] [semantic-release] › ✔ Completed step "prepare" of plugin "@semantic-release/exec"
[11:09:42 AM] [semantic-release] › ✖ An error occurred while running semantic-release: Error: Command failed with exit code 128: git tag v1.10.0-beta.11 a1ee6896485641d039f1816efcc0e30dce7139e8
fatal: tag 'v1.10.0-beta.11' already exists
...
所有未来的提交都develop
将失败。唯一的解决方案是合并release
到master
分支。develop
如果我再次合并release
。这将发生:
[9:57:53 AM] [semantic-release] › ✔ Completed step "verifyConditions" of plugin "@semantic-release/gitlab"
[9:57:53 AM] [semantic-release] › ℹ Found git tag v1.10.0-beta.11 associated with version 1.10.0-beta.11 on branch release
[9:57:53 AM] [semantic-release] › ℹ Found 1 commits since last release
[9:57:53 AM] [semantic-release] › ℹ Start step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[9:57:53 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analyzing commit: fix(bug): Some bug fixed
[9:57:53 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ The release type for the commit is patch
[9:57:53 AM] [semantic-release] [@semantic-release/commit-analyzer] › ℹ Analysis of 1 commits complete: patch release
[9:57:53 AM] [semantic-release] › ✔ Completed step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
...
[9:59:02 AM] [semantic-release] › ℹ Start step "publish" of plugin "@semantic-release/gitlab"
[9:59:02 AM] [semantic-release] [@semantic-release/gitlab] › ℹ Published GitLab release: v1.10.0-beta.12
[9:59:02 AM] [semantic-release] › ✔ Completed step "publish" of plugin "@semantic-release/gitlab"
[9:59:02 AM] [semantic-release] › ℹ Start step "success" of plugin "@semantic-release/exec"
[9:59:02 AM] [semantic-release] › ✔ Completed step "success" of plugin "@semantic-release/exec"
[9:59:02 AM] [semantic-release] › ✔ Published release 1.10.0-beta.12 on RC channel
它将在 RC 频道上发布 beta 版本。
对我来说,这看起来像是配置问题或者分支模型问题。任何帮助,将不胜感激!
注意:最初我想使用 vanilla GitFlow 分支模型,但在语义发布方面遇到了更多问题,因此我对其进行了一些简化。