校对:soup
AI-书面发布公告为语义发布. 从发布 diff 生成一个简洁的 changlog 消息,然后发布到 Discord, Slack, 或者两者兼而有之.
目录
安装
npm install --save-dev @dimension-studios/ai-changelog
快速启动
在语义释放生成释放注释后添加插件 :
export default {
branches: ["main"],
plugins: [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@dimension-studios/ai-changelog",
],
}
设置所需的 CI 秘密 :
AI_GATEWAY_API_KEY=...
AI_CHANGELOG_DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
AI_CHANGELOG_SLACK_WEBHOOK=https://hooks.slack.com/services/...
除非 dryRun 已启用.
配置
export default {
plugins: [
[
"@dimension-studios/ai-changelog",
{
branches: ["main"],
model: "openai/gpt-5.4-nano",
prompt: "Write concise release notes for non-developer readers.",
discordWebhookUrl: process.env.AI_CHANGELOG_DISCORD_WEBHOOK,
slackWebhookUrl: process.env.AI_CHANGELOG_SLACK_WEBHOOK,
includePaths: ["src/", "packages/"],
excludePaths: ["packages/generated/"],
dryRun: false,
},
],
],
}
需要的选项
除非 dryRun 已启用.
| 选项 | 默认 | 说明 |
|---|---|---|
discordWebhookUrl | AI_CHANGELOG_DISCORD_WEBHOOK | Discord webhook URL. (原始内容存档于2018-09-29). |
slackWebhookUrl | AI_CHANGELOG_SLACK_WEBHOOK | 黑入的 Webhook URL . |
gatewayApiKey | AI_GATEWAY_API_KEY | Vercel AI Gateway API 密钥. |
选项
| 选项 | 默认 | 说明 |
|---|---|---|
model | openai/gpt-5.4-nano | AI SDK Gateway 型号ID. |
prompt | 内建发布通知提示 | 用于生成公告标题和描述的系统提示. |
branches | ["main"] | 各分会允许发布公告. |
includePaths | 所有路径 | 包含 Git 路径前缀 . |
excludePaths | 常见生成/构建文件 | 额外的排除路径. |
dryRun | false | 生成和记录有效载荷而不张贴. |
出版商
解析器
Discord messages作为嵌入式发送,并带有生成的标题和描述.
export default {
plugins: [
// ...other semantic-release plugins
[
"@dimension-studios/ai-changelog",
{
discordWebhookUrl: process.env.AI_CHANGELOG_DISCORD_WEBHOOK,
},
],
],
}
偷懒
黑信息使用块 Kit :
header用于生成标题的块- 标记
section生成描述的块 context有版本和分支元数据块- 顶级
text通知和可获取性退后
export default {
plugins: [
// ...other semantic-release plugins
[
"@dimension-studios/ai-changelog",
{
slackWebhookUrl: process.env.AI_CHANGELOG_SLACK_WEBHOOK,
},
],
],
}
从您的 Slack 应用程序设置创建 Slack 导入的 Webhook, 然后将生成的 URL 存储为 AI_CHANGELOG_SLACK_WEBHOOK。 。 。 .
乱七八糟
export default {
plugins: [
// ...other semantic-release plugins
[
"@dimension-studios/ai-changelog",
{
discordWebhookUrl: process.env.AI_CHANGELOG_DISCORD_WEBHOOK,
slackWebhookUrl: process.env.AI_CHANGELOG_SLACK_WEBHOOK,
},
],
],
}
重试通知
如果语义释放成功, 但是 AI 生成或 Webhook 发送失败, 请重试通知而不重运行 释放 :
npx ai-changelog retry --branch main
默认情况下,重试命令使用最新的可达到的 git 标记,将上一个标记的 AI 宣告重现为
发布标签,并张贴到每个配置的出版商。 使用 --version 用于特定释放:
npx ai-changelog retry --version 1.0.1 --branch main
当另一个消息已经发布时, 只重试一个出版商 :
npx ai-changelog retry --version 1.0.1 --branch main --publisher slack
npx ai-changelog retry --version 1.0.1 --branch main --publisher discord
使用 --dry-run 核查生成的有效载荷而不张贴:
npx ai-changelog retry --version 1.0.1 --branch main --dry-run
重试命令读取与语义放出插件相同的环境变量 :
AI_GATEWAY_API_KEY=...
AI_CHANGELOG_DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
AI_CHANGELOG_SLACK_WEBHOOK=https://hooks.slack.com/services/...
您也可以在本地运行中覆盖这些值 --gateway-api-key, (中文(简体) ), --discord-webhook-url,以及
--slack-webhook-url。 。 。 .
GitHub 动作重试
要从 GitHub 动作 UI 中获取重试, 请在您的仓库中添加一个手动工作流程, 检查全部 git
历史、 安装依赖性、 构建软件包和运行 ai-changelog retry。仅显示重试中的特定输入
运算符需要:
version:留空以重试最新的标签,或输入一个版本,例如1.0.1。 。 。 .branch: Slack/Discord 元数据中显示的分支名称, 例如main。 。 。 .publisher数字 :both, (中文(简体) ),slack,或discord。 。 。 .dry_run: 不发送webhook请求而预览有效载荷.
用同样的 AI_GATEWAY_API_KEY, (中文(简体) ), AI_CHANGELOG_DISCORD_WEBHOOK,以及 AI_CHANGELOG_SLACK_WEBHOOK 秘密作为你的
发布工作流程 所以重试使用相同的模型和webhook配置.
完整的例子,请参见此寄存器
retry-changelog.yml 工作流程.
CI 和测试
使用 dryRun: true 当验证 CI 中的插件时。 该插件仍然收集释放上下文并生成通知有效载荷,但它不调用任何webhooks.
export default {
plugins: [
// ...other semantic-release plugins
[
"@dimension-studios/ai-changelog",
{
dryRun: true,
},
],
],
}
此软件包以 :
bun run check
bun run type-check
bun run knip
bun run test
bun run build
许可证
麻省理工学院