skip to content
barorin&?

Cloudflare Zero Trustを通過してRedmineのチケットを起票してみる

/ 2 min read

Table of Contents

はじめに

Cloudflare Zero TrustのApplicationで運用しているRedmineに対して、Pythonから チケット起票をする方法です。

方法

Cloudflare Zero Trust設定

  1. Access > Service AuthでService Tokenを作成
  2. Access > Applicationsで作成したApplicationにポリシーを設定する
    • Policy name: 任意
    • Action: Service Auth
      • Include
        • Selector: Service Token
        • Value: 1.で作成したService Token

Redmineにチケット起票するPythonコード

import json
import requests
url = "https://your-redmine-url/issues.json"
headers = {
"Content-Type": "application/json",
"X-Redmine-API-Key": "Redmineで発行したAPI Key",
"CF-Access-Client-Id": "Cloudflare Zero Trustで発行したCF-Access-Client-Id",
"CF-Access-Client-Secret": "Cloudflare Zero Trustで発行したCF-Access-Client-Secret",
}
# セッションを使用してリクエストを行う
def post_ticket(
project_id,
subject,
status_id,
tracker_id,
start_date,
due_date,
description,
assigned_to_id,
):
# API詳細: https://www.redmine.org/projects/redmine/wiki/Rest_Issues
payload = {
"issue": {
"project_id": project_id, # プロジェクトID
"subject": subject, # チケットの件名
"status_id": status_id, # ステータスID
"tracker_id": tracker_id, # トラッカーID
"start_date": start_date, # 開始日
"due_date": due_date, # 期日
"description": description, # 詳細
"assigned_to_id": assigned_to_id, # 担当者ID
}
}
r = requests.post(url, headers=headers, data=json.dumps(payload))
if r.status_code == 201:
return str(r.status_code) + ": チケットを作成しました"
else:
return str(r.status_code) + ": チケット作成に失敗しました"