Verwenden Sie die JIRA REST API über die Chrome JavaScript Console.
Hintergrund:
Wir wollten nicht für eine vollständige Bewerbung schreiben, was wir hoffen, dass ein isoliertes Vorkommen ist. Wir hatten ursprünglich geplant, PowerShells Invoke-WebRequest zu verwenden. Die Authentifizierung erwies sich jedoch als Herausforderung. Die API unterstützt Basic Authentication, obwohl es nur recommended when using SSL ist, die wir nicht für unseren internen Server verwenden. Auch unsere anfänglichen Tests führten zu 401 Fehlern (vielleicht aufgrund eines Fehlers).
Die API unterstützt jedoch auch die cookiebasierte Authentifizierung. Solange Sie die Anforderung von einem Browser mit einer gültigen JIRA-Sitzung generieren, funktioniert sie einfach. Wir haben diese Methode gewählt.
Lösung im Detail:
Zuerst finden und den entsprechenden Kommentar überprüfen und IDs Ausgabe:
SELECT * FROM jira..jiraaction WHERE actiontype = 'comment' AND actionbody LIKE '%RESOLVER.ADR.RecipNotFound%';
Dies könnte eine langsame Abfrage auf der Größe Ihrer JIRA Daten abhängig sein. Es scheint auf dem issueid
indiziert zu sein, also, wenn Sie das wissen, spezifizieren Sie es. Fügen Sie dieser Abfrage weitere Kriterien hinzu, sodass nur die Kommentare angezeigt werden, die Sie löschen möchten.
Die folgende Lösung ist für Kommentare zu einem einzelnen Problem geschrieben, aber mit einigen zusätzlichen JavaScript könnte erweitert werden, um mehrere Probleme zu unterstützen.
Wir benötigen die Liste der Kommentar-IDs für die Verwendung in der Chrome JavaScript-Konsole. Ein nützliches Format ist eine durch Kommata getrennte Liste von Strings, die Sie erstellen können, wie folgt:
SELECT '"' + CONVERT(VARCHAR(50),ID) + '", ' FROM jira..jiraaction WHERE actiontype = 'comment' AND actionbody LIKE '%RESOLVER.ADR.RecipNotFound%' AND issueid = @issueid FOR XML PATH('')
(Dies ist nicht unbedingt der beste Weg, um concatenate strings in SQL, aber es ist einfach und funktioniert für diesen Zweck.)
Öffnen Sie nun eine neue Browsersitzung und authentifizieren Sie sich bei Ihrer JIRA-Instanz. Wir haben Chrome verwendet, aber jeder Browser mit einer JavaScript-Konsole sollte dies tun.
die Zeichenfolge von dieser Abfrage erzeugt nehmen und es in der JavaScript-Konsole fallen innerhalb einer Anweisung wie folgt:
CommentIDs = [StringFromSQL];
Sie müssen das folgende Komma manuell (oder stellen Sie die obige Abfrage trimmen, dies zu tun für dich). Es sieht so aus:
CommentIDs = ["1234", "2345"];
Wenn Sie diesen Befehl ausführen, haben Sie ein JavaScript-Array mit all diesen Kommentar-IDs erstellt.
Jetzt kommen wir zum Fleisch der Technik. Wir werden den Inhalt dieses Arrays durchlaufen und mit Hilfe von XMLHttpRequest (oft abgekürzt XHR) einen neuen AJAX-Aufruf an die REST-API senden. (Es gibt auch eine jQuery option.)
for (let s of CommentIDs) {let r = new XMLHttpRequest; r.open("DELETE","http://jira.example.com/rest/api/2/issue/11111/comment/"+s,true); r.send();}
Sie müssen "11111" mit der entsprechenden Ausgabe ID ersetzen. Sie können dies für mehrere Ausgabe-IDs wiederholen, oder Sie können ein mehrdimensionales Array und eine bessere Loop erstellen.
Dies ist nicht elegant. Es hat keine Fehlerbehandlung, aber Sie können den Fortschritt mithilfe der Chrome JavaScript API überwachen.