基于Git提交命令自动创建GitHub PR和更新Jira任务状态的多仓库工作流 | n8n工作流
n8n工作流,GitHub自动化,JIRA集成,DevOps自动化,代码提交自动化,多仓库管理,任务状态同步

## 工作流概述

这个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]`但没有目标分支,并将停止,防止错误 |

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。