在语义发布中处理 nextRelease 版本

Posted

技术标签:

【中文标题】在语义发布中处理 nextRelease 版本【英文标题】:Handling nextRelease version in semantic release 【发布时间】:2019-04-24 07:32:39 【问题描述】:

所以我一直在阅读文档并了解了 什么我应该做,但没有真正掌握如何我能做到。

这是我的问题: - 我正在使用语义发布将我的包发布到 npm - 我还与 Pact 进行了合同测试。 - 我希望我的契约在发布后发布,如果成功的话,与新版本的版本相同

我怎样才能轻松做到这一点?

我查看了文档,了解到我可以使用 exec 插件,但是,我发现我不清楚我应该如何配置语义发布以与现在完全相同,只是将版本公开为,至少,一个环境变量,找不到人这样做的例子。

我可以使用钩子,但我担心如果由于某些原因没有发生 npm 发布,我仍然会在下一个版本中发布我的协议,而下一个版本并不完全存在。这里有什么建议吗?

看来我也可以编写自己的 JS 脚本(请参阅 https://github.com/semantic-release/semantic-release/blob/3cc62f0318ff8917fcdc7cebe890da9dbaa7b3f9/docs/developer-guide/js-api.md)来执行此操作以及处理版本,但我不确定这个示例做了什么以及它涵盖了当前行为的哪些内容。

我想我也可以编写自己的协议插件,但这比理解语义释放的内部原理更重要。

所以我在分享一些示例/经验,也许是一个简单的解决方案,可以在不到 30 分钟的时间内完成 :)

谢谢

PS:很抱歉在这里发帖,但语义释放问题似乎并不是真正为支持问题而提出的。

【问题讨论】:

【参考方案1】:

您可以在@semantic-release/npm@semantic-release/github 之后的额外发布步骤中简单地使用@semantic-release/exec


  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/npm",
    "@semantic-release/github",
    ["@semantic-release/exec", 
      "publishCmd": "publish-pacts $nextRelease.version"
    ],
  ]

这样,脚本publish-pacts 将在每个新版本的第一个参数中调用发布版本,仅当 npm 和 github 发布成功时。

【讨论】:

谢谢,这是我需要的澄清。一切正常

以上是关于在语义发布中处理 nextRelease 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何在不需要 npm 的情况下设置语义发布?

Visual Studio 解决方案的语义版本控制

npm学习之如何使用语义化版本

译Flink端到端精确一次处理语义的实现

如果您在文件夹中使用语义版本控制,如何获得前 5 个语义版本

-next 在语义版本控制中的含义