semantic-release-slack-bot 是一个基于 Node.js 的 npm 包,它结合了 semantic-release,Slack 和 Slack bot 来自动对发布过程进行管理,并向 Slack 频道发送通知。
本文将介绍如何使用 semantic-release-slack-bot,以及如何在项目中实现自动版本发布,同时在 Slack 频道中获得即时通知。
安装
我们可以使用 npm 进行安装:
npm install semantic-release-slack-bot --save-dev
此时,semantic-release-slack-bot 已被安装到我们的项目中。
接下来,我们要配置 Semantic Release。
配置 Semantic Release
为了使 semantic-release-slack-bot 正常运作,我们需要先配置 Semantic Release,并在项目中安装其相关的插件。首先,我们需要在项目根目录下,创建 .releaserc.json
配置文件,来告诉 Semantic Release 应该如何发布项目版本。
我们可以使用 Semantic Release 的默认配置文件,也可以对其进行自定义。
默认配置文件 .releaserc.json
:
-- -------------------- ---- ------- - ----------- ----------- ---------- - ------------------------------------ -------------------------------------------- ------------------------ - --------------------------- - --------- - - ------- ------------------------- ------- ------------------------ -- - ------- ----------------------------- ------- -------------------------------- -- - ------- -------------- ------- ----------------------- - - - - - -
我们可以看到,Semantic Release 使用了一系列插件来管理版本发布的过程。其中 @semantic-release/commit-analyzer
和 @semantic-release/release-notes-generator
用于自动生成版本日志,@semantic-release/npm
用于管理 npm 包的发布,@semantic-release/github
则用于管理 GitHub release。
上述配置文件中配置的语义化版本号规则为 Angular 规范,具体可以参考 Angular 规范。
安装插件
在完成 Semantic Release 配置文件的配置之后,我们需要安装其相关的插件。
npm install @semantic-release/commit-analyzer @semantic-release/release-notes-generator @semantic-release/npm @semantic-release/github --save-dev
配置环境变量
我们需要在 GitHub 上创建一个 token,用于访问 GitHub API。在创建 token 时,需要为其授予项目管理和发布 release 的权限。
我们还需要在项目中添加一个环境变量 GH_TOKEN
,其值为刚刚创建的 token。
具体操作:进入项目 Settings -> Secrets,点击 "New repository secret",然后创建名为 GH_TOKEN
的新密钥,并将其值设置为刚刚创建的 GitHub token。
配置 Git
为了使 Semantic Release 能够顺利工作,我们需要设置 Git 的账户信息。
在命令行中执行下列 Git 配置:
git config --global user.email "you@example.com" git config --global user.name "Your Name"
发布项目版本
在完成以上配置之后,我们可以使用以下命令来发布项目版本:
npx semantic-release --no-ci
运行该命令后,Semantic Release 会根据我们在 .releaserc.json
中的配置,自动执行前面介绍的一系列插件,生成版本 tag,并将其发布到 npm 上,同时在 GitHub 上创建一个新的 release。
如果你已经启用了 GitHub Action,那么你就可以不用手动执行上述命令。GitHub Action 会自动执行这个操作。
配置 Semantic Release Slack Bot
以上是 Semantic Release 的使用方式,接下来我们将讨论如何配置 semantic-release-slack-bot。
创建 Slack App 和 Bot
首先,我们需要创建一个 Slack App,并为其创建一个 bot。可以在 Slack API 官网 上新建一个 App。
在 App 创建完成后,我们可以通过 "Add features and functionality" -> "Bots" 来为 App 创建 bot。
创建 Bot 完成后,需要将其添加到我们的工作区。在成功添加 bot 到工作区之后,我们可以获得一些 Bot 信息:
- Bot 名称(bot name)
- Bot Token(bot token)
这些信息在后续的配置中非常关键。
安装 Semantic Release Slack Bot
在使用 npm 安装 semantic-release-slack-bot 前,我们需要先为其配置一些信息。
在项目根目录下创建 .env
文件,并填写以下内容:
GH_TOKEN=<github API token> # Slack SLACK_API_TOKEN=<bot token> SLACK_CHANNEL_ID=<channel id> SLACK_USERNAME=<bot name> SLACK_ICON_URL=<bot icon url>
其中,bot token
、bot name
、channel id
和 bot icon url
指的是我们刚刚创建的 Slack bot 的相关信息。
配置发布流程
我们需要将 semantic-release 和 semantic-release-slack-bot 结合使用,从而实现在发布过程中通过 Slack bot 进行通知。
我们可以在 .releaserc.json
中配置以下信息:
-- -------------------- ---- ------- - ----------- ----------- ---------- - ------------------------------------ -------------------------------------------- ------------------------ - --------------------------- - --------- - - ------- ------------------------- ------- ------------------------ -- - ------- ----------------------------- ------- -------------------------------- -- - ------- -------------- ------- ----------------------- - - - -- - ----------------------------- - ------------ - ------ - ------------- ----- ---------------- ---- - - - - - -
Semantic Release Slack Bot 支持全局配置和插件级配置。
在全局配置中,我们可以配置 notifyFail
和 notifySuccess
两个属性,用来指明在版本发布失败或成功时是否向 Slack 频道发送通知消息。
发布版本
在完成以上操作之后,我们可以使用以下命令来发布版本:
npx semantic-release --no-ci
当我们使用该命令发布版本时,semantic-release-slack-bot 将使用我们在 .env
文件中配置的信息,自动向 Slack 频道发送通知消息,告知版本发布状态。
示例代码
- 在
.env
文件中添加以下配置:
GH_TOKEN=<github API token> # Slack SLACK_API_TOKEN=<bot token> SLACK_CHANNEL_ID=<channel id> SLACK_USERNAME=<bot name> SLACK_ICON_URL=<bot icon url>
- 在
.releaserc.json
文件中添加以下配置:
-- -------------------- ---- ------- - ----------- ----------- ---------- - ------------------------------------ -------------------------------------------- ------------------------ - --------------------------- - --------- - - ------- ------------------------- ------- ------------------------ -- - ------- ----------------------------- ------- -------------------------------- -- - ------- -------------- ------- ----------------------- - - - -- - ----------------------------- - ------------ - ------ - ------------- ----- ---------------- ---- - - - - - -
- 发布版本。
执行以下命令进行版本发布:
npx semantic-release --no-ci
版本发布完成后,Semantic Release Slack Bot 会将消息发送到 Slack 频道中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f79603c7116197505561b40