BacklogのAPIを使って消えてしまった課題本文を履歴から復元する方法

要約
BacklogとGitHub連携中に課題本文が消失。Backlog APIの更新履歴機能を発見し、過去の本文を取得できることが判明。シェルスクリプトで復元ツールを作成し、コマンド一つで簡単に復元可能に。
意見はこのエリアに表示されます

はじめに

BacklogとGitHub issueを連携させて運用していたところ、ある日突然Backlogの課題本文が全て消えてしまうという事態に遭遇しました。
いくつか試した結果、Backlog APIの更新履歴機能を使うことで無事に復元できたので、その方法を共有します。

同じような問題で困っている方の参考になれば幸いです。

背景:GitHub issueとBacklogの自動連携システム

私のチームでは、以下のような自動化システムを運用していました。

  • 毎晩定時にGitHub Actionsで自動実行されるスクリプト
  • GitHub issueのサブissueのopen/closed状態を確認
  • その状態をBacklogの課題本文に自動記載

この仕組みにより、プロジェクトの進捗状況を一元管理できていました。

発生した問題

スクリプトを修正した次の、Backlogを確認すると課題の本文が全て空になっていることに気づきました。

解決のヒント:Backlog APIの更新履歴機能

途方に暮れていたところ、「小ネタBacklog課題コメントから過去のバージョンを復元する」という記事を発見しました。

この記事から、Backlogの課題コメント取得APIを使うと、課題の更新履歴を含めて取得できることを知りました。

APIの仕様

このAPIのレスポンスには、通常のコメントだけでなく、課題の更新履歴も含まれています。

復元スクリプトの実装

この仕組みを利用して、シェルスクリプトで復元ツールを作成しました。

restore_backlog_description.sh

使い方

実装のポイント

1. jqを使った安全なJSON処理

改行や特殊文字を含む本文でも、jqの--argオプションで安全にエスケープ処理されます。

2. エラーハンドリングの徹底

スクリプトの冒頭でこれらを設定することで、どこかでエラーが発生したら即座に処理を停止。予期しない動作を防ぎます。

3. 最新の過去ログを取得するロジック

  • 全コメントからdescriptionフィールドの変更履歴だけを抽出
  • lastで最新の変更前の状態を取得
  • ?演算子でchangeLogが存在しない場合もエラーにならない

これらの工夫により、安全で確実な復元が可能になっています。

まとめ

Backlog APIの更新履歴機能は、単なる履歴表示だけでなく、データ復元のための重要なバックアップ機能としても活用できます。

同じような問題に遭遇した方の参考になれば幸いです。

参考資料

Explore More
関連記事はありません。
Trends