使用 Python 和 Flask 从 GitHub 问题评论自动生成 JIRA 票证,从而简化您的工作流程
欢迎来到 DevOps 的世界!今天,我们正在深入研究一个令人兴奋的项目,该项目将 Jira 和 GitHub 连接起来以实现无缝集成。该项目的目标是直接从 GitHub 问题评论自动创建 Jira 票证,从而节省开发人员的时间并减少手动工作。
以下是我们将如何处理这个项目:
一切设置完成后,我们的 Flask 应用程序将充当 GitHub 的 Webhook API。每当开发人员在 GitHub 问题上评论 /jira 时,程序都会自动创建相应的 Jira 票证,该票证在 Jira 仪表板上可见。令人兴奋,对吧?让我们开始吧!
在深入项目之前,请确保您已准备好以下内容:
pip install flask
满足这些先决条件后,您就可以启动这个项目了!
让我们通过创建和设置一个用于托管 Flask 应用程序的 EC2 实例来开始该项目。请按照以下步骤操作:
第 1 步:创建 EC2 实例
第 2 步:通过 SSH 连接到实例
使用下载的密钥对文件通过 SSH 连接到实例:
pip install flask
第 3 步:设置 Python 环境
运行以下命令来安装Python和Flask:
ssh -i your-key.pem ubuntu@<instance-public-ip>
这将为项目设置所有必要的依赖项。
第 4 步:创建 Flask 应用程序
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.py 脚本之前,我们需要两条关键信息:
生成 Atlassian API 令牌的步骤:
导航至帐户设置:
创建新的 API 令牌:
复制 API 令牌:
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 文件中的一些重要字段,以确保集成与您的 Jira 帐户无缝协作。
1。 HTTP 基本身份验证(电子邮件地址)
将 HTTPBasicAuth 中的第一个参数替换为链接到您的 Jira 帐户的电子邮件地址。
API_TOKEN = "<Your-Generated-API-Token>"
2。项目密钥
替换脚本中字段下的“key”字段:
pip install flask
3。问题类型 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 票证创建集成!
现在我们的脚本已准备就绪,最后一步是在 GitHub 存储库中配置 Webhook。该 webhook 将侦听特定事件(在本例中为发出评论)并触发 Flask 应用程序。
添加 Webhook 的步骤:
添加新的 Webhook:
pip install flask
内容类型:
从下拉菜单中选择 application/json。
触发器:
选择选项“让我选择单个事件”。
仅选中问题评论复选框。
保存 Webhook:
测试集成
观察魔法:
在 Jira 仪表板上验证:
恭喜! ?您已经成功完成了集成 GitHub 和 Jira 的实践项目。通过利用 Flask 应用程序作为中介,我们自动化了直接从 GitHub 问题评论创建 Jira 票证的过程。
在这个项目中,我们涵盖了:
这种集成通过减少手动工作并确保重要任务不会被遗漏,简化了开发人员和项目经理之间的协作。这是自动化如何提高 DevOps 工作流程中生产力的实际演示。
您可以在此基础上随意构建,进一步自定义集成或探索其他用例,例如在 Jira 中自动跟踪 GitHub Pull 请求或将其他工具集成到您的工作流程中。
我们希望您发现这个项目内容丰富且引人入胜。 ?如需了解更多信息博客,请在 Hashnode、X(Twitter) 和 LinkedIn 上关注我。
快乐编码和自动化! ?
以上是使用 Flask API 自动创建 JIRA 票证:GitHub Webhook 集成指南的详细内容。更多信息请关注PHP中文网其他相关文章!