ホームページ > バックエンド開発 > Python チュートリアル > Flask API を使用した JIRA チケット作成の自動化: GitHub Webhook 統合ガイド

Flask API を使用した JIRA チケット作成の自動化: GitHub Webhook 統合ガイド

Patricia Arquette
リリース: 2024-12-30 09:00:17
オリジナル
998 人が閲覧しました

Python と Flask を使用して GitHub の課題コメントから JIRA チケットを自動的に生成することで、ワークフローを合理化します

?導入

DevOps の世界へようこそ!今日、私たちは Jira と GitHub を橋渡ししてシームレスに統合するエキサイティングなプロジェクトに取り組みます。このプロジェクトの目標は、GitHub の課題コメントから直接 Jira チケットの作成を自動化し、時間を節約し、開発者の手動作業を軽減することです。

このプロジェクトに取り組む方法は次のとおりです:

  • Flask API をセットアップする: Flask アプリケーションをホストするために、t2.micro Ubuntu ベースの EC2 インスタンスを起動します。
  • Jira の構成: Jira でプロジェクトを作成し、その API を使用してチケットを作成します。
  • API の統合: Jira API トークンを Flask アプリに提供することで、Jira と対話できるようになります。

すべてがセットアップされると、Flask アプリは GitHub の Webhook API として機能します。開発者が GitHub の問題について /jira にコメントするたびに、プログラムは対応する Jira チケットを自動的に作成し、Jira ダッシュボードに表示されます。ワクワクしますよね?始めましょう!


?前提条件

プロジェクトに入る前に、次のものが準備されていることを確認してください:

  • GitHub アカウントと Jira アカウント: 統合を構成するには、両方のプラットフォームでアクティブなアカウントが必要です。
  • Flask がインストールされました: Flask が Python 環境にセットアップされていることを確認します。そうでない場合は、次を使用してインストールできます。
pip install flask
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • EC2 と Flask の基本的な理解: EC2 インスタンスのセットアップと単純な Flask アプリケーションの作成に精通していると、スムーズに進めることができます。

これらの前提条件が整ったら、このプロジェクトを開始する準備は完了です!


? EC2 インスタンスと Flask アプリケーションのセットアップ

Flask アプリケーションをホストするための EC2 インスタンスを作成して設定することからプロジェクトを始めましょう。次の手順に従ってください:

ステップ 1: EC2 インスタンスを作成する

  • AWS EC2 ダッシュボードに移動し、新しい t2.micro Ubuntu ベースのインスタンスを作成します。
  • インスタンスに jira-github-integration という名前を付けます。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

  • SSH アクセス用のキーペア ファイルをダウンロードします。
  • セキュリティ グループの ポート 5000 を開いて、Flask アプリケーションにアクセスします。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

ステップ 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 スクリプトを実行する前に、2 つの重要な情報が必要です。

  • Atlassian API トークン
  • Atlassian ドメイン名

Atlassian API トークンを生成する手順:

  • Atlassian アカウントにログインします:
  • Atlassian にアクセスし、資格情報を使用してログインします。

アカウント設定に移動します:

  • 右上隅にあるプロフィール写真またはアバターをクリックします。
  • ドロップダウン メニューから [アカウント設定] を選択します。
  • 「セキュリティ」タブに移動します:
  • 「アカウント設定」ページで、「セキュリティ」タブをクリックします。
  • 「API トークン」セクションで、「API トークンの作成」をクリックします。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

新しい API トークンを作成します:

  • 説明 (GitHub Jira Integration など) を入力し、プロンプトが表示されたらトークンの有効期限を設定します。
  • 「作成」をクリックすると、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 スクリプトでの必須フィールドの構成

スクリプトを実行する前に、統合が Jira アカウントとシームレスに機能するように、github_jira.py ファイル内のいくつかの重要なフィールドを更新する必要があります。

1. HTTP Basic認証(メールアドレス)
HTTPBasicAuth の最初のパラメーターを、Jira アカウントにリンクされているメール アドレスに置き換えます。

API_TOKEN = "<Your-Generated-API-Token>"
ログイン後にコピー

2.プロジェクトキー

  • プロジェクト キーは、チケットが作成される Jira プロジェクトを一意に識別します。
  • プロジェクト キーを見つけるには:
  • Jira ダッシュボードに移動します。
  • 「プロジェクト」タブで、チケットが作成されるプロジェクトを見つけます。
  • プロジェクトキーは単純な括弧 (()) 内に表示されます。たとえば、プロジェクト Project ABC (SCRUM) では、キーは SCRUM です。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

スクリプト内のフィールドの下にある「キー」フィールドを置き換えます:

pip install flask
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3.問題タイプ ID

  • 問題タイプ ID は、問題のタイプ (例: バグ、ストーリー、タスク) の一意の識別子です。
  • 問題 ID を確認するには:
  • Jira ダッシュボードで、右上隅にある 3 つの点をクリックし、[カスタム フィールドの管理] を選択します。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

  • プロジェクト設定で、左側のメニューから課題タイプに移動します。
  • 使用するストーリーまたは問題のタイプをクリックします。
  • ブラウザで URL を確認してください。 URL の最後に数値 (例: 10005) があります。これは問題タイプ ID です。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

スクリプト内の 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 リポジトリを開きます。 リポジトリ設定へのアクセス:
  • リポジトリ メニューにある [設定] タブをクリックします。
  • 左側のナビゲーション バーで、[コードと自動化] セクションにある Webhook を選択します。

新しい Webhook を追加します:

  • 「Webhook を追加」ボタンをクリックします。
  • Webhook を構成します:
  • ペイロード URL: Flask アプリケーションの URL を入力します。これには、EC2 インスタンスのパブリック DNS と Flask エンドポイントのルートが含まれる必要があります。
pip install flask
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • コンテンツタイプ:
    ドロップダウン メニューから application/json を選択します。

  • トリガー:
    オプション「個々のイベントを選択させます」を選択します。
    コメントの問題のみのボックスをオンにします。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Webhook を保存します:

  • 「Webhook の追加」ボタンをクリックして設定を保存します。

統合のテスト

  • GitHub で問題を作成する:
  • リポジトリの [問題] タブに移動します。
  • [新しい問題] をクリックし、タイトルと説明を入力して保存します。
  • 問題に関するコメント:
  • 作成した課題を開き、/jira を使用してコメントを追加します。

魔法を観察してください:

  • Webhook がトリガーされ、POST リクエストが Flask サーバーに送信されます。
  • Flask アプリケーションはリクエストを処理し、Jira API を使用して Jira チケットを作成します。

Jira ダッシュボードで確認します:

  • Jira ダッシュボードを開き、スクリプトで指定されたプロジェクトに移動します。
  • GitHub の問題コメントに対応する新しく作成されたチケットが表示されます。

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide

Automating JIRA Ticket Creation with a Flask API: A GitHub Webhook Integration Guide


?結論

おめでとうございます! ? GitHub と Jira を統合する実践プロジェクトが正常に完了しました。 Flask アプリケーションを仲介として利用することで、GitHub の課題コメントから直接 Jira チケットを作成するプロセスを自動化しました。

このプロジェクトでは次のことを取り上げました:

  • Flask アプリをホストするための EC2 インスタンスのセットアップ
  • Jira API と対話するように Flask アプリを構成します。
  • ワークフローをトリガーするための GitHub Webhook を作成および追加します。
  • GitHub コメントからの Jira チケットのシームレスな作成を観察します。

この統合により、手作業が軽減され、重要なタスクが漏れないようにすることで、開発者とプロジェクト マネージャー間のコラボレーションが簡素化されます。これは、自動化によって DevOps ワークフローの生産性がどのように向上するかを示す実践的なデモンストレーションです。

この基盤を自由に構築して、統合をさらにカスタマイズしたり、Jira での GitHub プル リクエスト追跡の自動化やワークフローへの他のツールの統合などの追加のユースケースを検討したりできます。

このプロジェクトが有益で魅力的であると感じていただければ幸いです。 ?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。

コーディングと自動化を楽しんでください! ?

以上がFlask API を使用した JIRA チケット作成の自動化: GitHub Webhook 統合ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート