
## 工作流概述
这个n8n工作流模板来自Intuz,提供了一个完整的自动化解决方案,用于在多个代码仓库中扩展DevOps实践。厌倦了在git push、在GitHub中创建拉取请求、更新相应的JIRA任务以及手动在Slack或Notion中通知团队之间的重复性操作吗?这个模板将您的整个提交后工作流程置于自动驾驶状态,在代码和项目管理之间创建了一个无缝智能的桥梁。
## 工作原理
通过在git提交命令中嵌入特定的关键词和JIRA问题ID,此工作流会自动在正确的GitHub仓库中创建拉取请求,并更新相应的JIRA票据。这创建了一个完整的集中式系统,使所有项目保持同步,为管理多样化代码库组合的团队提供了巨大的效率提升。
## 适用对象
这个模板对于任何希望简化其软件开发生命周期(SDLC)的组织来说都是必备的。它非常适合:
– **开发团队**:消除繁琐的手动任务并强制执行一致的工作流程,让开发人员专注于编码
– **DevOps工程师**:一个现成的部署解决方案,无需数周的自定义脚本即可集成关键的开发工具
– **工程经理和团队领导**:实时了解开发进度,确保流程得到遵循而无需持续检查
– **项目经理**:在开发工作完成的那一刻获得JIRA中的准确自动更新,改善项目跟踪和预测
## 分步设置说明
### 1. 连接您的工具(凭据)
– **GitHub**:创建具有repo范围的凭据以允许PR创建
– **JIRA**:创建API令牌并连接您的JIRA Cloud或Server实例
– **Slack**:使用OAuth2连接您的Slack工作区
– **Notion**:连接您的Notion集成令牌
### 2. 配置GitHub Webhook(针对每个仓库)
此工作流由GitHub webhook触发。您必须将其添加到您想要自动化的每个仓库中。
1. 首先,保存并激活n8n工作流以确保webhook URL处于活动状态
2. 在n8n工作流中,从Webhook节点复制生产URL
3. 转到您的GitHub仓库并导航到Settings > Webhooks > Add webhook
4. 在Payload URL字段中,粘贴n8n webhook URL
5. 将Content type更改为application/json
6. 在”Which events would you like to trigger this webhook?”下,选择”Just the push event”
7. 点击”Add webhook”。对所有相关仓库重复此操作
### 3. 配置JIRA节点(关键步骤)
您的JIRA项目具有其状态的唯一ID。您必须更新工作流以匹配您的项目。
1. 找到名为”Update task status after PR”和”Update the task status without PR”的两个JIRA节点
2. 在每个节点中,转到Status ID字段
3. 点击下拉菜单并选择与您的特定JIRA项目工作流中的”Done”或”Development Done”对应的状态。列表直接从您连接的JIRA实例获取
### 4. 配置通知节点
告诉工作流向何处发送更新。
– **对于Slack**:打开名为”Send message in slack…”的两个节点,并从Channel ID下拉菜单中选择您所需的频道
– **对于Notion**:打开名为”Append a block in notion…”的两个节点,并将目标Notion页面或数据库的URL粘贴到Block ID字段中
### 5. 最终激活
完成所有配置后,确保工作流已保存且切换开关设置为Active。您现在可以开始自动化了!
## 自定义指导
这个模板是一个强大的基础。以下是如何根据团队的具体需求进行调整。
### 1. 更改PR标题或正文:
转到”Request to create PR”(HTTP Request)节点。在JSON Body字段中,您可以编辑标题和正文表达式。例如,您可以添加提交者的姓名({{$(‘Webhook’).item.json.body.pusher.name }})或返回JIRA任务的链接。
### 2. 适应固定的分支策略:
如果您的团队总是针对单个分支(例如develop)创建拉取请求,您可以简化工作流。在”Request to create PR”节点中,将JSON正文中的base值从{{…}}更改为您的静态分支名称:”base”: “develop”。然后您可以从”Commit Message Breakdown”(Code)节点中删除基础分支逻辑。
### 3. 修改通知消息:
发送到Slack和Notion的文本完全可自定义。打开任何Slack或Notion节点并编辑文本字段。您可以包括来自先前节点的任何数据,例如PR URL({{ $(‘Request to create PR’).item.json.body.html_url }})或仓库名称。
### 4. 为不同的约定调整提交正则表达式:
这是一个高级自定义。如果您的团队使用不同的提交格式(例如(DEV-123)而不是DEV-123),您可以编辑”Commit Message Breakdown”(Code)节点中的正则表达式。请务必仔细测试您的更改。
### 5. 添加/删除通知渠道:
不使用Notion?只需删除两个Notion节点。想要发送电子邮件?在Slack节点并行添加Gmail或SMTP节点,并使用相同的数据进行配置。
## 提交消息命令指南
您的`git commit`消息是此自动化的遥控器。使用以下格式触发特定操作。
**基础格式:**
`TICKET-ID 您的描述性消息 [command1,command2,base-branch]`
| 提交消息示例 | 使用的命令 | 触发的自动化 |
| :— | :— | :— |
| **`DEV-123 修复登录错误 [auto-pr, taskcompleted, develop]`** | `[auto-pr]`
`[taskcompleted]`
`develop` | **🚀 完整自动化:**
1. 创建到`develop`分支的拉取请求
2. 将JIRA任务`DEV-123`更新为”Done”
3. 发送关于这两个操作的通知 |
| **`DEV-456 新UI上的WIP [auto-pr, main]`** | `[auto-pr]`
`main` | **⚙️ 仅PR创建:**
1. 创建到`main`分支的拉取请求
2. JIRA任务状态**不改变** |
| **`DEV-789 最终文档已添加 [taskcompleted]`** | `[taskcompleted]` | **✅ 仅JIRA更新:**
1. **不创建**拉取请求
2. 将JIRA任务`DEV-789`更新为”Done”
3. 发送关于任务更新的通知 |
| **`DEV-111 小拼写错误修复`** | *无* | **🚫 无自动化:**
提交被推送,但工作流不执行任何操作。这是用于不需要自动化的标准提交 |
| **`DEV-222 这将失败 [auto-pr]`** | `[auto-pr]` | **⚠️ 错误 – 工作流停止:**
工作流的验证将捕获使用了`[auto-pr]`但没有目标分支,并将停止,防止错误 |

评论(0)