首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用语义发布获取下一个标记版本

使用语义发布获取下一个标记版本
EN

Stack Overflow用户
提问于 2020-03-06 23:09:08
回答 3查看 3.8K关注 0票数 8

您好,我在我的存储库中使用语义发布进行版本控制。在我的Gitlab中,当我将我的分支与master合并时,我的标签会根据提交而增加,它工作得很好。有没有办法让我得到合并之前的“下一个标签版本”?我想在合并之前将下一个版本写入文件

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

我尝试过使用exec,但是exec不是为我运行的(我对语义版本非常陌生,我一定是在哪里做错了什么)

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

我的gitlab Ci脚本:

代码语言:javascript
复制
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

这是我的package.json:

代码语言:javascript
复制
{
  "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}"
    }]
  ]
}
代码语言:javascript
复制
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

Exec似乎没有运行

EN

回答 3

Stack Overflow用户

发布于 2020-03-09 02:22:40

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

代码语言:javascript
复制
{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/npm",
    ["@semantic-release/exec", {
      "prepareCmd": "./update-version.sh ${nextRelease.version}",
    }],
  ]
}

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

另请参阅FAQ-How can I use a npm build script that requires the package.json’s version?

票数 6
EN

Stack Overflow用户

发布于 2020-04-13 03:54:22

另一个解决方案(我在我的shell脚本中使用)是在“预演”(实际上不发布新版本) npx semantic-release --dryRun | grep -oP 'Published release \K.*? '上使用grep

票数 3
EN

Stack Overflow用户

发布于 2021-01-21 23:46:12

对我有效的解决方案如下所示:

  1. 仍然会将语义发布插件的输出输出到标准输出。
  2. 会将该版本拉入一个环境变量($LATEST_VERSION)中,您可以使用该环境变量执行任何操作。

代码语言:javascript
复制
npx semantic-release --ci false --dryRun | tee /dev/tty | grep -i "Published release" > .semver-output

export LATEST_VERSION=$([[ $(cat .semver-output) =~ .*([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+) ]] && echo ${BASH_REMATCH[1]})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60566805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档