使用 Flask API 自动创建 JIRA 票证:GitHub Webhook 集成指南
使用 Python 和 Flask 从 GitHub 问题评论自动生成 JIRA 票证,从而简化您的工作流程
?介绍
欢迎来到 DevOps 的世界!今天,我们正在深入研究一个令人兴奋的项目,该项目将 Jira 和 GitHub 连接起来以实现无缝集成。该项目的目标是直接从 GitHub 问题评论自动创建 Jira 票证,从而节省开发人员的时间并减少手动工作。
以下是我们将如何处理这个项目:
- 设置 Flask API:我们将启动一个基于 Ubuntu 的 t2.micro EC2 实例来托管我们的 Flask 应用程序。
- 配置 Jira:我们将在 Jira 上创建一个项目并使用其 API 来创建票证。
- 集成 API:通过向我们的 Flask 应用程序提供 Jira API 令牌,我们将使其能够与 Jira 交互。
一切设置完成后,我们的 Flask 应用程序将充当 GitHub 的 Webhook API。每当开发人员在 GitHub 问题上评论 /jira 时,程序都会自动创建相应的 Jira 票证,该票证在 Jira 仪表板上可见。令人兴奋,对吧?让我们开始吧!
?先决条件
在深入项目之前,请确保您已准备好以下内容:
- GitHub 和 Jira 帐户:您需要两个平台上的活动帐户才能配置集成。
- 已安装 Flask:确保在您的 Python 环境中设置 Flask。如果没有,您可以使用以下命令安装它:
pip install flask
- 对 EC2 和 Flask 的基本了解:熟悉设置 EC2 实例和创建简单的 Flask 应用程序将帮助您顺利进行操作。
满足这些先决条件后,您就可以启动这个项目了!
?设置 EC2 实例和 Flask 应用程序
让我们通过创建和设置一个用于托管 Flask 应用程序的 EC2 实例来开始该项目。请按照以下步骤操作:
第 1 步:创建 EC2 实例
- 导航到 AWS EC2 仪表板并创建一个新的基于 Ubuntu 的 t2.micro 实例。
- 将实例命名为 jira-github-integration。
- 下载用于 SSH 访问的密钥对文件。
- 在安全组中打开端口5000来访问flask应用。
第 2 步:通过 SSH 连接到实例
使用下载的密钥对文件通过 SSH 连接到实例:
pip install flask
第 3 步:设置 Python 环境
运行以下命令来安装Python和Flask:
ssh -i your-key.pem ubuntu@<instance-public-ip>
这将为项目设置所有必要的依赖项。
第 4 步:创建 Flask 应用程序
- 创建一个名为 github_jira.py 的新文件:
sudo apt update sudo apt install python3-pip python3-venv python3 -m venv myvenv source myvenv/bin/activate # Activate the virtual environment pip3 install flask # Install Flask in the virtual environment
将以下内容添加到文件中:
nano github_jira.py
?生成 Atlassian API 令牌
在运行 github_jira.py 脚本之前,我们需要两条关键信息:
- Atlassian API 令牌
- 您的 Atlassian 域名
生成 Atlassian API 令牌的步骤:
- 登录您的 Atlassian 帐户:
- 访问 Atlassian 并使用您的凭据登录。
导航至帐户设置:
- 点击右上角的个人资料图片或头像。
- 从下拉菜单中选择帐户设置。
- 转到安全选项卡:
- 在帐户设置页面中,单击“安全”选项卡。
- 在 API 令牌部分下,单击“创建 API 令牌”。
创建新的 API 令牌:
- 提供描述(例如,GitHub Jira 集成)并根据提示设置令牌的到期日期。
- 单击“创建”,将生成您的 API 令牌。
复制 API 令牌:
- 单击“复制”按钮复制令牌。
- 将令牌粘贴到 github_jira.py 脚本中的 API_TOKEN 变量中:
import requests from requests.auth import HTTPBasicAuth import json from flask import Flask, request app = Flask(__name__) # Define a route that handles POST requests @app.route('/createJira', methods=['POST']) def createJira(): # The comment's body field in the GitHub payload comment_data = request.json.get("comment", {}) comment_body = comment_data.get("body", "") # Check if the body field of the comment is "/jira" if comment_body == "/jira": print("Condition met. Proceeding with POST request...") # Jira API details url = "https://<Your-Atlassian-domain>/rest/api/3/issue" API_TOKEN = "<YOUR_API_TOKEN>" auth = HTTPBasicAuth("<YOUR_EMAIL_ADDRESSS_CONNECTED_TO_THE_ACCOUNT>", API_TOKEN) headers = { "Accept": "application/json", "Content-Type": "application/json" } payload = json.dumps({ "fields": { "description": { "content": [ { "content": [ { "text": "Order entry fails when selecting supplier.", "type": "text" } ], "type": "paragraph" } ], "type": "doc", "version": 1 }, "project": { "key": "<YOUR_KEY>" }, "issuetype": { "id": "<YOUR_ISSUE_ID>" }, "summary": "Main order flow broken", }, "update": {} }) # POST request to create an issue in Jira response = requests.post(url, data=payload, headers=headers, auth=auth) print("POST request response:", response.status_code, response.text) # Return the response back return json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": ")) else: print("No matching comment found. POST request will not be made.") return json.dumps({"error": "No matching comment found. POST request was not made."}, sort_keys=True, indent=4, separators=(",", ": ")) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
添加您的 Atlassian 域:
替换 在 url 变量中添加您的 Atlassian 域名。例如,如果您的 Jira 仪表板 URL 是 https://yourworkspace.atlassian.net,请使用 yourworkspace.atlassian.net 作为域。
?在 github_jira.py 脚本中配置必填字段
在运行脚本之前,您需要更新 github_jira.py 文件中的一些重要字段,以确保集成与您的 Jira 帐户无缝协作。
1。 HTTP 基本身份验证(电子邮件地址)
将 HTTPBasicAuth 中的第一个参数替换为链接到您的 Jira 帐户的电子邮件地址。
API_TOKEN = "<Your-Generated-API-Token>"
2。项目密钥
- 项目密钥唯一标识将在其中创建票证的 Jira 项目。
- 要找到您的项目密钥:
- 转到 Jira 仪表板。
- 在“项目”选项卡下,找到将创建票证的项目。
- 项目密钥显示在简单的括号 (()) 中。例如,在项目Project ABC (SCRUM)中,关键是SCRUM。
替换脚本中字段下的“key”字段:
pip install flask
3。问题类型 ID
- 问题类型 ID 是问题类型的唯一标识符(例如 Bug、故事、任务)。
- 查找问题 ID:
- 在 Jira 仪表板中,单击右上角的三个点,然后选择管理自定义字段。
- 在“项目设置”中,从左侧菜单导航至“问题类型”。
- 单击故事或您要使用的问题类型。
- 查看浏览器中的 URL。在 URL 末尾,您会发现一个数值(例如 10005)。这是您的问题类型 ID。
替换脚本中issuetype下的“id”字段:
ssh -i your-key.pem ubuntu@<instance-public-ip>
脚本中更新字段的示例:
sudo apt update sudo apt install python3-pip python3-venv python3 -m venv myvenv source myvenv/bin/activate # Activate the virtual environment pip3 install flask # Install Flask in the virtual environment
最后一步:运行脚本
更新这些字段后,使用以下命令运行脚本:
nano github_jira.py
您的脚本现已完全配置并准备好将 GitHub 评论与 Jira 票证创建集成!
?添加Webhook以完成集成
现在我们的脚本已准备就绪,最后一步是在 GitHub 存储库中配置 Webhook。该 webhook 将侦听特定事件(在本例中为发出评论)并触发 Flask 应用程序。
添加 Webhook 的步骤:
- 导航到 GitHub 存储库:
- 打开要测试该项目的 GitHub 存储库。 访问存储库设置:
- 单击存储库菜单中的“设置”选项卡。
- 在左侧导航栏中,选择“代码和自动化”部分下的 Webhooks。
添加新的 Webhook:
- 单击“添加 Webhook”按钮。
- 配置 Webhook:
- 有效负载 URL: 输入 Flask 应用程序的 URL。这应包括您的 EC2 实例的公共 DNS 和 Flask 终端节点的路由:
pip install flask
内容类型:
从下拉菜单中选择 application/json。触发器:
选择选项“让我选择单个事件”。
仅选中问题评论复选框。
保存 Webhook:
- 单击添加 Webhook 按钮保存您的设置。
测试集成
- 在 GitHub 上创建问题:
- 导航到存储库的“问题”选项卡。
- 单击“新问题”,提供标题和描述,然后保存。
- 对该问题的评论:
- 打开创建的问题并使用 /jira 添加评论。
观察魔法:
- webhook 将触发并向 Flask 服务器发送 POST 请求。
- Flask 应用程序将处理请求并使用 Jira API 创建 Jira 票证。
在 Jira 仪表板上验证:
- 打开 Jira 仪表板并导航到脚本中指定的项目。
- 您应该会看到与 GitHub 问题评论相对应的新创建的票证。
?结论
恭喜! ?您已经成功完成了集成 GitHub 和 Jira 的实践项目。通过利用 Flask 应用程序作为中介,我们自动化了直接从 GitHub 问题评论创建 Jira 票证的过程。
在这个项目中,我们涵盖了:
- 设置 EC2 实例来托管 Flask 应用程序。
- 配置 Flask 应用程序以与 Jira API 交互。
- 创建并添加 GitHub Webhook 以触发工作流程。
- 从 GitHub 评论中观察 Jira 票证的无缝创建。
这种集成通过减少手动工作并确保重要任务不会被遗漏,简化了开发人员和项目经理之间的协作。这是自动化如何提高 DevOps 工作流程中生产力的实际演示。
您可以在此基础上随意构建,进一步自定义集成或探索其他用例,例如在 Jira 中自动跟踪 GitHub Pull 请求或将其他工具集成到您的工作流程中。
我们希望您发现这个项目内容丰富且引人入胜。 ?如需了解更多信息博客,请在 Hashnode、X(Twitter) 和 LinkedIn 上关注我。
快乐编码和自动化! ?
以上是使用 Flask API 自动创建 JIRA 票证:GitHub Webhook 集成指南的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
