はじめに
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の更新履歴機能は、単なる履歴表示だけでなく、データ復元のための重要なバックアップ機能としても活用できます。
同じような問題に遭遇した方の参考になれば幸いです。