スクラムのプロジェクト管理にPivotal Trackerを使っています。 このとき、PBIのテンプレートを自分たちで用意してしているのですが、テンプレートを更新するとき、バックログにある既存PBIの内容も更新したいです。
手動で更新するのは大変なので、Pivotal TrackerのAPIを使って更新を試してみます。
おすすめの方
- Pivotal TrackerのAPIを使いたい方
- Pivotal TrackerのAPIでPBIを更新したい方
Pivotal TrackerのAPIトークンを取得する
下記を参考にしてAPIトークンを取得します。
Pivotal TrackerのAPIで、PBIのDescriptionを更新する
いまのPBIを確認する
いくつかのPBIのDescriptionを確認します。
これらのPBIに対して、DESCRIPTIONに下記を追記してみます。
## 影響範囲
- 対応後に記載する
PBIの一覧を取得して、Descriptionを更新するスクリプト
次のAPIを利用します。
本記事ではPythonで書いてみました。 PBIの一覧を取得する方法の詳細は、次をご覧ください。
app.py
import json
import urllib.parse
import requests
import textwrap
from time import sleep
API_ENDPOINT = 'https://www.pivotaltracker.com/services/v5'
TOKEN = 'you_token'
PROJECT_ID = 'xxx'
def main():
result = search()
for item in result['stories']['stories']:
print(item.get('id'))
new_description = make_new_description(item.get('description', ''))
update_pbi(item.get('id'), new_description)
sleep(1)
print('------')
print(result['stories']['total_hits'])
def search():
headers = {
'X-TrackerToken': TOKEN,
}
# わかりやすさ優先でListで書いてみる
query = [
'type:feature,bug,chore',
'state:unscheduled,unstarted',
]
url_query = {
# キーワードの区切りは半角空白
'query': ' '.join(query),
}
parameter = urllib.parse.urlencode(url_query)
resp = requests.get(
f'{API_ENDPOINT}/projects/{PROJECT_ID}/search?{parameter}',
headers=headers
)
return resp.json()
def make_new_description(description: str) -> str:
add_message = textwrap.dedent('''
## 影響範囲
- 対応後に記載する
''')
return description + add_message
def update_pbi(story_id: int, description: str):
headers = {
'X-TrackerToken': TOKEN,
'Content-Type': 'application/json',
}
payload = {
'description': description,
}
requests.put(
f'{API_ENDPOINT}/projects/{PROJECT_ID}/stories/{story_id}',
headers=headers,
data=json.dumps(payload)
)
if __name__ == '__main__':
main()
実行する
python app.py
結果を確認する
無事にDescriptionが更新されました。
さいごに
Pivotal Trackerで既存PBIを更新する場合などに役に立つと思います。参考になれば幸いです。