アーカイブ済みの課題を削除する方法
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
目的
もしも環境にアーカイブされた課題が大量にあり、それらが今後確実に必要ないことがわかっている場合には、この記事で紹介した手順でそれらを削除することができます。
ソリューション
データベースで、すべての課題キーおよびアーカイブされた課題の要約を返す SQL クエリを実行します。
select ( p.pkey || '-' || ji.issuenum ) as "issue_key" from jiraissue ji join project p on p.id = ji.project where ji.archived = 'Y';
下記の出力結果を例に確認します。
issue_key ----------- PROJ-1 (1 row)
- ユーザーは出力を CSV ファイルとしてエクスポートし、PowerShell でそれらの値を繰り返し処理できます。
- Linux サーバーから直接実行できる bash スクリプトを作成する方法は次のとおりです。
ステップは次のとおりです。
.sh ファイルを以下の内容で作成します。
#!/bin/bash echo "What's your Jira URL? Provide with the scheme, e.g. https://myjira.com" read jiraurl echo "What's your Jira username?" read username echo "What's your password?" read password cat issuelist.csv | while read line do echo "Restoring issue $line" curl -u $username:$password \ -H "Content-Type:application/json" \ -X PUT \ -k $jiraurl/rest/api/2/issue/$line/restore sleep 0.1 echo "Deleting issue $line" curl -u $username:$password \ -H "Content-Type:application/json" \ -X DELETE \ -k $jiraurl/rest/api/2/issue/$line sleep 0.1 done
以下の SQL を使用して、アーカイブされたすべての課題のリストを取得します
select ( p.pkey || '-' || ji.issuenum ) as "issue_key" from jiraissue ji join project p on p.id = ji.project where ji.archived = 'Y';
クエリはさらにカスタマイズすることが可能です。たとえば、Project PROJ のアーカイブされた課題をクエリする場合には、次のようなクエリになります。
select ( p.pkey || '-' || ji.issuenum ) as "issue_key" from jiraissue ji join project p on p.id = ji.project where ji.archived = 'Y' and p.pkey = 'PROJ';
- クエリの出力を、.sh ファイルを作成したのと同じディレクトリにある「issuelist.csv」というファイルに、1 行に 1 つの課題キーを含めて配置します。クエリが提供するのと同じ方法です。
-
PROJ-10 PROJ-16 PROJ-15 PROJ-14 PROJ-17
-
スクリプトを実行して、Jira baseurl、ユーザー名、パスワードを入力します。
$ sh delete-archived-issues.sh What's your Jira URL? Provide with the scheme, e.g. https://myjira.com https://10.125.91.129 What's your Jira username? USERNAME What's your password? mypassword
スクリプトは各行を繰り返し処理し、課題を復元してから削除します。アーカイブされた課題を直接削除することはできないため、最初に課題を復元する必要があります。
$ sh delete-archived-issues.sh What's your Jira URL? Provide with the scheme, e.g. https://myjira.com https://10.125.91.129 What's your Jira username? USERNAME What's your password? PASSWORD Restoring issue PROJ-10 Deleting issue PROJ-10 Restoring issue PROJ-16 Deleting issue PROJ-16 Restoring issue PROJ-15 Deleting issue PROJ-15 Restoring issue PROJ-14 Deleting issue PROJ-14
Jira サーバーに大きな負荷が掛かるのを防ぐために、1/10 秒のスリープがあります。また、間違った課題が誤って (例えば、SQL クエリを間違えるなどして) 削除された場合に備えて、最初に必ずバックアップを取得してください。