семантический-выпуск тегов публикации в неправильный канал

#git #gitlab #git-flow #semantic-versioning #semantic-release

#git #gitlab #git-flow #семантический-управление версиями #семантический релиз

Вопрос:

Я использую semantic-release для нашего решения .Net Core. Semantic-release используется как часть конвейера CI в репозитории GitLab.

Это мой файл .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 перехода, приведет к тому, что semantic-release не сможет найти последний тег, созданный перед слиянием release .

Позвольте мне попытаться объяснить, что происходит. Слияние с develop помощью squash создается для ветки функций (из которой была создана develop ) с сообщением о фиксации feat(Products): Add tag support . эта фиксация приведет к созданию новой версии v1.10.0-beta.11 . Затем я объединю develop ветку release , это приведет к 1.10.0-RC.1 созданию версии. Затем я сделаю новую фиксацию в develop ветке, что приведет к тому, что semantic-release не сможет создать новую версию.

 [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-канале.

Для меня это похоже на проблему конфигурации или, возможно, проблемы с ветвящейся моделью. Любая помощь будет оценена!

Примечание: Изначально я хотел использовать ванильную модель ветвления GitFlow, но у меня возникло еще больше проблем с semantic-release, поэтому я немного упростил ее.

Комментарии:

1. Я сталкиваюсь с точно такой же проблемой. Вы нашли решение? Похоже, это может быть связано: github.com/semantic-release/semantic-release/issues/1708