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 スクリプトを実行する前に、2 つの重要な情報が必要です。
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 ドメインを追加します:
スクリプトを実行する前に、統合が Jira アカウントとシームレスに機能するように、github_jira.py ファイル内のいくつかの重要なフィールドを更新する必要があります。
1. HTTP Basic認証(メールアドレス)
HTTPBasicAuth の最初のパラメーターを、Jira アカウントにリンクされているメール アドレスに置き換えます。
API_TOKEN = "<Your-Generated-API-Token>"
2.プロジェクトキー
スクリプト内のフィールドの下にある「キー」フィールドを置き換えます:
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 プル リクエスト追跡の自動化やワークフローへの他のツールの統合などの追加のユースケースを検討したりできます。
このプロジェクトが有益で魅力的であると感じていただければ幸いです。 ?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。
コーディングと自動化を楽しんでください! ?
以上がFlask API を使用した JIRA チケット作成の自動化: GitHub Webhook 統合ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。