JIRA REST APIを使用して課題を検索し、マークダウン形式で出力するクライアントツールとREST APIサーバー
このツールは、JIRA REST APIを使用して特定のプロジェクトの課題を検索し、結果をマークダウン形式で表示・保存するためのクライアントツールです。また、REST APIエンドポイントとしても利用できます。優先度や期限に基づいて課題を整理し、緊急課題を特定して詳細情報を提供します。
- JIRA APIを使用した課題の検索
- 優先度に基づく課題のソート
- マークダウン表形式での課題一覧表示
- ステータス別の課題数サマリー
- 緊急課題の特定と詳細表示
- マークダウンファイルへの出力
- JSONファイルへのデータ保存
- REST APIエンドポイントの提供
jiraAPI/
│
├── src/ # ソースコードディレクトリ
│ ├── jira/ # JIRAクライアント関連のモジュール
│ │ ├── __init__.py
│ │ ├── client.py # JiraAPIClientクラス
│ │ ├── formatter.py # データフォーマット関連の機能
│ │ └── utils.py # ユーティリティ関数
│ │
│ ├── config/ # 設定関連
│ │ ├── __init__.py
│ │ └── settings.py # 設定クラス
│ │
│ └── api/ # REST APIエンドポイント
│ ├── __init__.py
│ ├── app.py # Flaskアプリケーション
│ ├── models.py # APIモデル
│ └── services.py # APIサービス
│
├── data/ # データディレクトリ
│ ├── output/ # 出力ファイル(JSONやマークダウン)
│ └── logs/ # ログファイル
│
├── tests/ # テストコード
│ ├── __init__.py
│ ├── test_client.py
│ └── test_formatter.py
│
├── scripts/ # 実行スクリプト
│ ├── run_jira_client.py # クライアント実行スクリプト
│ ├── run_api_server.py # APIサーバー実行スクリプト
│ └── examples.py # サンプル実行スクリプト
│
├── docs/ # ドキュメント
│ ├── api.md # API仕様書
│ └── examples/ # リクエスト例
│
├── requirements.txt # 依存パッケージ
└── README.md # プロジェクト説明
- Jira画面右上の「アカウント設定を管理」を選択します。
- 表示された画面で「セキュリティ」を選択します。
- 「APIトークン」セクションから「APIトークンの作成と管理」を選択します。
- 遷移先で「APIトークンを作成」をクリックします。
- 「Name」と「有効期限」を設定し、「作成」を選択します。
- 発行されたトークンを控え、本プログラムの
api_tokenとして利用します。
- Jira上で対象のプロジェクトを開きます。
- ブラウザのURLを確認します。
- URL内の
{projectname}部分がproject_keyとなります。
例:
-
リポジトリをクローン
git clone https://github.com/yourusername/jira-api-client.git cd jira-api-client -
依存パッケージのインストール
pip install -r requirements.txt
設定は.envファイルで管理します。以下の手順で設定してください:
-
.env.exampleファイルを.envにコピーcopy .env.example .env -
.envファイルを編集して、以下の設定を行います:# JIRA API設定 JIRA_DOMAIN=your-domain.atlassian.net JIRA_EMAIL=your-email@example.com JIRA_API_TOKEN=your-api-token JIRA_PROJECT_KEY=PROJECT # APIサーバー設定 API_HOST=0.0.0.0 API_PORT=5000 API_DEBUG=False # SSL検証設定 VERIFY_SSL=True # SSL_CERT_PATH=/path/to/certificate.pem # 必要に応じてコメントを解除
JIRA_DOMAIN- JIRAドメイン(例:your-domain.atlassian.net)JIRA_EMAIL- JIRAアカウントのメールアドレスJIRA_API_TOKEN- JIRA APIトークンJIRA_PROJECT_KEY- JIRAプロジェクトキー
API_HOST- APIサーバーのホスト(デフォルト:0.0.0.0)API_PORT- APIサーバーのポート(デフォルト:5000)API_DEBUG- デバッグモードの有効/無効(TrueまたはFalse)
VERIFY_SSL- SSL証明書の検証を有効/無効(TrueまたはFalse)SSL_CERT_PATH- カスタムSSL証明書のパス(オプション)
python scripts/run_jira_client.py
このコマンドは、設定されたプロジェクトの課題を検索し、マークダウン形式で表示し、ファイルに保存します。
python scripts/run_api_server.py
このコマンドは、REST APIサーバーを起動します。デフォルトでは、ポート5000でリッスンします。
オプション:
--host- ホスト(デフォルト:0.0.0.0)--port- ポート番号(デフォルト:5000)--debug- デバッグモードで実行
python scripts/examples.py
このスクリプトは、JIRAクライアントの基本的な使用例を示します。
POST /api/jira/issues
JIRA課題を取得し、JSON形式で返すエンドポイントです。
リクエスト例:
{
"credentials": {
"domain": "your-domain.atlassian.net",
"email": "your-email@example.com",
"api_token": "your-api-token",
"project_key": "PROJECT"
},
"query_params": {
"max_results": 50,
"include_description": true,
"output_format": "json"
}
}POST /api/jira/markdown
JIRA課題をマークダウン形式で取得するエンドポイントです。
詳細なAPI仕様については、API仕様書を参照してください。
実行結果は以下のディレクトリに保存されます:
- マークダウンファイル:
data/output/jira_issues_[PROJECT_KEY]_[TIMESTAMP].md - JSONファイル:
data/output/jira_issues_[PROJECT_KEY]_[TIMESTAMP].json
テストを実行するには:
python -m unittest discover -s tests
このプロジェクトはMITライセンスの下で公開されています。