Skip to content

Dokumentation n8n ProjectVue Automation

Ich würde unbedingt empfehlen, die ganze Automation einmal auf einem komplett leeren und neuen Repository (z.B. n8n-automation-test) zu testen um sicherzugehen, dass alles funktioniert. Dabei ist es wichtig, im Issue Objekt erstellen node statt userToGithub das userToAssignee Objekt für Assignees zu benutzen um nicht alle zu benachrichtigen.

1. GitHub Repository präparieren

  1. Es sollten vorher keine Issues existieren, da sonst die Issue-Nummer nicht synchron mit ProjectVue ist (oft nicht vermeidbar)
  2. Alle existierenden Labels und Meilensteine löschen
  3. GitHub Project aus der Baseprojekt-Vorlage erstellen
  4. Alle Benutzer (inkl. externe und farbcodedev müssen zum Project hinzugefügt werden (Write Rolle))
  5. GitHub Project anschließend im Repository verlinken
  6. Nutzer farbcodedev als Admin zum Repository hinzufügen:
    • Über den Add people-Button
    • URL: https://github.com/farbcodegmbh/n8n-automation-test/settings/access
  7. Alle Nutzer, die in ProjectVue assigned wurden:
    • Müssen vorher einen GitHub-Account haben
    • Müssen ebenfalls zum Repository hinzugefügt werden (Rolle: Triage)

2. n8n Automation anlegen

  • Die n8n Automation "ProjectVue Tickets zu GitHub Issues übertragen Freizeitpass" duplizieren und umbenennen
  • In ProjectVue Datenbank richtige project_id für jeweiliges Projekt finden und in folgenden SQL-Query-Nodes anpassen
    • SQL Query für Meilensteine
    • SQL Query für Labels
    • SQL Query für Issues
    • Checken ob nächstes Ticket gleiche Nummer hat

3. GitHub Repository in folgenden n8n-Nodes anpassen

Die folgenden Nodes müssen alle angepasst werden (keinen vergessen!):

  1. Meilensteine hinzufügen
  2. Labels hinzufügen
  3. Dateien auf GitHub hochladen (File Path anpassen)
  4. Issues hinzufügen
  5. Platzhalter Issue erstellen
  6. Issues closen
  7. Kommentar hinzufügen

Wichtiger Hinweis

  • Unbedingt den File Path im Node Dateien auf GitHub hochladen anpassen.

Node „Issue Objekt erstellen“

  • Das Objekt userToGitHub muss um die GitHub-Benutzernamen erweitert werden.

  • Beispiel für Kunde Alexander Strobel:

    1. Wurde vorher auf GitHub angelegt und zum Repo hinzugefügt.
    2. Nun muss ein neues Key-Value-Pair hinzugefügt werden:
json
{
  "Alexander Strobel": "GITHUB_BENUTZERNAME"
}
  • Wichtig: Bevor die Automation gestartet wird, sollten alle, die im Projekt auf Tickets assigned sind, ihre Notifications deaktivieren, um hunderte Mails zu vermeiden.

4. Einrichtung der GraphQL-Nodes

Einige API-Funktionen benötigen GitHub GraphQL. Dafür sind folgende Schritte nötig:

Projektnummer herausfinden

  • Projekt öffnen und Projektnummer aus der URL lesen
  • Beispiel: https://github.com/orgs/farbcodegmbh/projects/2525

Query zur Ermittlung der Status-IDs und der projectId

Diese Query in einem GraphQL-Client (z. B. Postman, Authorization mit Bearer Token und Personal GitHub Access Token) ausführen:

graphql
{
  organization(login: "farbcodegmbh") {
    projectV2(number: 25) {
      id
      title
      fields(first: 50) {
        nodes {
          ... on ProjectV2SingleSelectField {
            id
            name
            options {
              id
              name
            }
          }
        }
      }
    }
  }
}

Diese Query liefert:

  • Die Status IDs der Projekt-Status (z. B. 98236657 für closed)
  • Diese IDs müssen im Node Issue Objekt erstellen im Objekt statusIDs eingetragen werden
  • Zudem erhält man die projectId (z. B. PVT_kwDOB7LcBM4BH2L_), die im Node Issue zu Projekt hinzufügen eingetragen werden muss

Query zur Ermittlung der Projekt-Properties

Diese Query liefert die IDs aller Projektfelder (Properties). Projektnummer anpassen!

graphql
{
  organization(login: "farbcodegmbh") {
    projectV2(number: 20) {
      id
      title
      fields(first: 50) {
        nodes {
          ... on ProjectV2FieldCommon {
            id
            name
            dataType
          }
        }
      }
    }
  }
}

Diese Query liefert:

  • IDs der Projekt-Properties (z. B. Status-Feld, Zeitabschätzungs-Feld)

Anpassungen in zwei spezifischen Nodes

Node „Projektstatus anpassen“

  • projectId eintragen
  • fieldId = ID des Status-Feldes (aus obiger Query)

Node „Issue Zeitabschätzung hinzufügen“

  • projectId eintragen
  • fieldId = ID des Zeitabschätzung-Feldes