Workaround: So kannst du alle Fehler(Issues) aus einem GitLab-Projekt löschen

Workaround: So kannst du alle Fehler(Issues) aus einem GitLab-Projekt löschen

Unter anderem nutze ich GitLab um Fehler, Probleme und Features in diversen Projekten zu tracken. Dafür eignet sich das integrierte Issues-Board mit vielen Features ideal.

Ein aktuelles Projekt ist bald beendet. Nun wurden über die Projektlaufzeit noch viele Fehler, Probleme und Features entdeckt, welche in einem Folgeprojekt bearbeitet werden sollen.

Mein erster Gedanke: Ich kopiere das aktuelle Projekt mit all den Labels und Einstellungen und benannte es neu, danach lösche ich alle Fehler im Issues-Board und verschiebe dann die entsprechenden Fehler vom alten Projekt in das neue Projekt. Ziel der Übung: ein frisches Projekt mit nur den gezügelten Fehlern.

Ein GitLab-Projekt kopieren

Ein GitLab-Projekt kann ganz einfach kopiert werden. Dazu wird das zu kopierende Projekt exportiert und das Export-File beim Erstellen eines neuen Projekts verwenden und importiert. Eine Variante ein bestehendes Projekt als Vorlage zu verwenden hab bis leider noch nicht gefunden.

Das Problem bei diesem Vorgehen: Nicht nur die Einstellungen, sondern auch alle Inhalte werden mitkopiert – auch die Fehler im Issues-Board.

Alle Fehler im Issues-Board löschen

Das Problem

Wie bereits einige unter Bulk delete issues bemerkten, ist es bis jetzt nicht direkt möglich alle Fehler auf einmal aus dem Board zu löschen. Es werden unter genanntem Link bereits diverse Workarounds beschrieben, allerdings scheiterte ich bei den Versuchen die Workarounds zu verwenden, welche über die Developer-Konsole des Browsers erfolgen. Offenbar, hat sich die API oder der Zugriff auf die API geändert.

Die Lösung bzw. der Workaround

Es stelle sich heraus, dass der Zugriff auf die API verweigert wird. Dem kann mit einem „Personal Access Token“ entgegengewirkt werden. Der Token kann unter dem persönlichen Profil erstellt werden.

So kannst du nun alle Fehler in einem Projekt löschen:

Schritt 1: Developer-Konsole des Browsers öffnen
Schritt 2: jQuery einbinden

Kopiere alles von https://code.jquery.com/jquery-3.4.1.min.js und kopiere es in die Konsole.

Schritt 3:

Kopiere folgendes Script in die Konsole:

var projectID = "xxxxxxx"; //Fill out
var accessToken = "xxxxxxx"; //Fill out

function deleteAllIssuesPerPage() {
  $.ajax({
    type: "get",
    url: "https://gitlab.com/api/v4/projects/" + projectID +
      "/issues?per_page=100&access_token=" + accessToken,
    success: function(issues) {
      console.log(issues);
      for (const x of issues) {
        deleteIssue(x.iid);
      }

      if (issues.length == 0) {
        console.log("ALL ISSUES DELETED !!!");
      } else {
        setTimeout(deleteAllIssuesPerPage, 5000); // wait for other delete operations to be processed
      }
    },
  });
}

function deleteIssue(id) {
  $.ajax({
    type: "DELETE",
    url: "https://gitlab.com/api/v4/projects/" +
      projectID +
      "/issues/" +
      id +
      "?access_token=" + accessToken,
    success: function() {
      console.log(id + " DELETED");
    },
  });
}


Schritt 4:

Führe nun das Script aus, indem du folgendes in die Konsole eingibst:

deleteAllIssuesPerPage()