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

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>
</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)
</your_issue_id></your_key></your_email_addresss_connected_to_the_account></your_api_token></your-atlassian-domain>

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>"
</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>
</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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python vs. C:重要な違​​いを理解しますPython vs. C:重要な違​​いを理解しますApr 21, 2025 am 12:18 AM

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

Python vs. C:プロジェクトのためにどの言語を選択しますか?Python vs. C:プロジェクトのためにどの言語を選択しますか?Apr 21, 2025 am 12:17 AM

PythonまたはCの選択は、プロジェクトの要件に依存します。1)迅速な開発、データ処理、およびプロトタイプ設計が必要な場合は、Pythonを選択します。 2)高性能、低レイテンシ、および緊密なハードウェアコントロールが必要な場合は、Cを選択します。

Pythonの目標に到達する:毎日2時間のパワーPythonの目標に到達する:毎日2時間のパワーApr 20, 2025 am 12:21 AM

毎日2時間のPython学習を投資することで、プログラミングスキルを効果的に改善できます。 1.新しい知識を学ぶ:ドキュメントを読むか、チュートリアルを見る。 2。練習:コードと完全な演習を書きます。 3。レビュー:学んだコンテンツを統合します。 4。プロジェクトの実践:実際のプロジェクトで学んだことを適用します。このような構造化された学習計画は、Pythonを体系的にマスターし、キャリア目標を達成するのに役立ちます。

2時間の最大化:効果的なPython学習戦略2時間の最大化:効果的なPython学習戦略Apr 20, 2025 am 12:20 AM

2時間以内にPythonを効率的に学習する方法は次のとおりです。1。基本的な知識を確認し、Pythonのインストールと基本的な構文に精通していることを確認します。 2。変数、リスト、関数など、Pythonのコア概念を理解します。 3.例を使用して、基本的および高度な使用をマスターします。 4.一般的なエラーとデバッグテクニックを学習します。 5.リストの概念を使用したり、PEP8スタイルガイドに従ったりするなど、パフォーマンスの最適化とベストプラクティスを適用します。

PythonとCのどちらかを選択:あなたに適した言語PythonとCのどちらかを選択:あなたに適した言語Apr 20, 2025 am 12:20 AM

Pythonは初心者やデータサイエンスに適しており、Cはシステムプログラミングとゲーム開発に適しています。 1. Pythonはシンプルで使いやすく、データサイエンスやWeb開発に適しています。 2.Cは、ゲーム開発とシステムプログラミングに適した、高性能と制御を提供します。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Python vs. C:プログラミング言語の比較分析Python vs. C:プログラミング言語の比較分析Apr 20, 2025 am 12:14 AM

Pythonはデータサイエンスと迅速な発展により適していますが、Cは高性能およびシステムプログラミングにより適しています。 1. Python構文は簡潔で学習しやすく、データ処理と科学的コンピューティングに適しています。 2.Cには複雑な構文がありますが、優れたパフォーマンスがあり、ゲーム開発とシステムプログラミングでよく使用されます。

1日2時間:Python学習の可能性1日2時間:Python学習の可能性Apr 20, 2025 am 12:14 AM

Pythonを学ぶために1日2時間投資することは可能です。 1.新しい知識を学ぶ:リストや辞書など、1時間で新しい概念を学びます。 2。練習と練習:1時間を使用して、小さなプログラムを書くなどのプログラミング演習を実行します。合理的な計画と忍耐力を通じて、Pythonのコアコンセプトを短時間で習得できます。

Python vs. C:曲線と使いやすさの学習Python vs. C:曲線と使いやすさの学習Apr 19, 2025 am 12:20 AM

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境