使用语义版本获取下一个标签版本

Ori*_*gin 8 semantic-release

嗨,我在我的 repo 中使用语义发布进行版本控制。在我的 Gitlab 中,当我将我的分支与 master 合并时,我的标签会根据提交增加并且工作正常。有什么方法可以让我在合并之前获得“下一个标签版本”。我想在合并之前将下一个版本写入文件

尝试使用 exec 但它似乎没有运行

我尝试使用 exec 但 exec 没有为我运行(我对语义发布很陌生,我一定在某处做错了什么)

你能把我推向正确的方向吗:)

我的 gitlab Ci 脚本:

semantic_release:
stage: Tag
image: node:12.16
variables:
GITLAB_TOKEN: $TOKEN_ACCESS
before_script:
- npm install -g semantic-release/exec
- npm install -g semantic-release @semantic-release/gitlab-config
script:
- semantic-release -e @semantic-release/gitlab-config @semantic-release/exec
only:
- master
Run Code Online (Sandbox Code Playgroud)

这是我的 package.json:

{
  "name": "@semantic-release/npm",
  "description": "semantic-release",
  "version": "0.0.0-development",
  "author": "",
  "release": {
    "analyzeCommits": "@semantic-release/commit-analyzer",
    "generateNotes": "@semantic-release/release-notes-generator",
    "publish": "@semantic-release/gitlab",
    "success": false,
    "fail": false,
    "branches": [
      "master"
    ],
    "npmPublish": false
  },
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    ["@semantic-release/exec", {
      "prepareCmd": "./my-build-script.sh ${nextRelease.version}"
    }]
  ]
}
Run Code Online (Sandbox Code Playgroud)
1:30pm
[7:55:10 AM] [semantic-release] › ?  Completed step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"
[7:55:10 AM] [semantic-release] › ?  The next release version is 0.2.0
[7:55:10 AM] [semantic-release] › ?  Start step "verifyRelease" of plugin "[Function: verifyRelease]"
[7:55:10 AM] [semantic-release] › ?  Completed step "verifyRelease" of plugin "[Function: verifyRelease]"
[7:55:10 AM] [semantic-release] › ?  Start step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[7:55:10 AM] [semantic-release] › ?  Completed step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[7:55:10 AM] [semantic-release] › ?  Start step "prepare" of plugin "[Function: prepare]"
[7:55:10 AM] [semantic-release] › ?  Completed step "prepare" of plugin "[Function: prepare]"
[7:55:12 AM] [semantic-release] › ?  Created tag v0.2.0
[7:55:12 AM] [semantic-release] › ?  Start step "publish" of plugin "@semantic-release/gitlab"
[7:55:12 AM] [semantic-release] [@semantic-release/gitlab] › ?  Verify GitLab authentication
Run Code Online (Sandbox Code Playgroud)

Exec 似乎没有运行

Ila*_*oul 7

在 shell 脚本中使用的解决方案是grep“空运行”(实际上并不发布新版本)

VERSION_SPACES=$(npx semantic-release --dryRun | grep -oP 'Published release \K.*? ')
VERSION="${VERSION_SPACES// /}" # Remove spaces
echo $VERSION
Run Code Online (Sandbox Code Playgroud)


小智 5

下一个版本标签将在发布期间传递给任何插件。为了使用下一个版本更新文件,您可以在准备步骤中使用@semantic-release/exec

{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/npm",
    ["@semantic-release/exec", {
      "prepareCmd": "./update-version.sh ${nextRelease.version}",
    }],
  ]
}
Run Code Online (Sandbox Code Playgroud)

在此示例中./update-version.sh,在发布之前,将使用下一个版本作为其第一个参数来调用脚本。

另请参阅常见问题解答-如何使用需要 package.json 版本的 npm 构建脚本?