Frage zu Github Workflow

Frage:

Ich habe an einem Workflow gearbeitet, der meine n8n-Workflows nach einem bestimmten Plan auf GitHub sichert. Nachdem die erste(n) Datei(en) auf GitHub erstellt wurden, wird die GitHub-Datei alle paar Tage aktualisiert.

Jedoch möchte ich einen Abschnitt hinzufügen, der nur ausgeführt wird, wenn eine Änderung an dem/den auf Github gesicherten Workflow(s) vorgenommen wurde. Hat jemand Ideen, wie ich das mit einem If-Node (oder einem anderen Node) umsetzen kann?

Hey @Josue_Vazquez, während du auf eine Antwort wartest, sind hier ein paar Dinge, die dir helfen könnten:

Empfohlene Ressourcen

Automatisch zu deiner Frage zugeordnet.

Dokumentation:

Forum:

@DC3 - du hast bei ähnlichen Problemen schon geholfen, kannst du dir das mal anschauen?

Automatisch vorgeschlagen vom Community-Bot von n8n. Das ist ein Pilotprojekt – bitte teile dein Feedback hier.

Um redundante Commits zu vermeiden, kannst du den SHA der vorhandenen Datei über die GitHub API abrufen und einen kryptografischen Hash deiner aktuellen Workflow-JSON dagegen vergleichen, indem du einen n8n Code-Knoten vor dem If-Knoten verwendest. Wenn die Hashes übereinstimmen, überspringe den GitHub-Update-Knoten vollständig, um dein Commit-Verlauf sauber zu halten. Lass mich wissen, wie deine aktuelle GitHub-Knoten-Antwortstruktur aussieht, und ich kann dir hier das exakte Snippet für den Hash-Vergleich teilen.

Ich würde den tatsächlichen Dateiinhalt direkt mit GitHubs sha vergleichen, anstatt einen normalen Hash zu verwenden. Der GitHub-Wert ist ein Git-Blob-SHA, daher stimmt er nicht unbedingt mit einem Standard-Hash des Workflow-JSON überein.

Ein sicherer Ablauf wäre:

  1. Den aktuellen Workflow-JSON exportieren.
  2. Die vorhandene GitHub-Datei abrufen und ihren Base64-Inhalt dekodieren.
  3. Beide Versionen auf die gleiche Weise normalisieren, z. B. das JSON parsen und konsistent serialisieren.
  4. Den normalisierten Inhalt vergleichen.
  5. Das GitHub-Update nur senden, wenn sie sich unterscheiden.

Behalte GitHubs vorhandenen Datei-SHA für die Update-Anfrage selbst, verwende aber den Inhaltsvergleich, um zu entscheiden, ob ein Update erforderlich ist.

Ich würde auch überprüfen, ob das exportierte JSON Metadaten enthält, die sich ohne eine aussagekräftige Workflow-Bearbeitung ändern, ansonsten kann der Vergleich immer noch unnötige Commits erzeugen.