From 4462d1886652826a0abec1cb642adb8c04f93c7b Mon Sep 17 00:00:00 2001 From: Matteo Cherubini Date: Thu, 25 Jun 2026 12:59:29 +0200 Subject: [PATCH] feat(n8n): Add manual Genome ingest workflow (scratch) --- .../n8n/Genome_ ingest MANUALE (scratch).json | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 deploy/n8n/Genome_ ingest MANUALE (scratch).json diff --git a/deploy/n8n/Genome_ ingest MANUALE (scratch).json b/deploy/n8n/Genome_ ingest MANUALE (scratch).json new file mode 100644 index 0000000..7f16a50 --- /dev/null +++ b/deploy/n8n/Genome_ ingest MANUALE (scratch).json @@ -0,0 +1,170 @@ +{ + "name": "Genome: ingest MANUALE (scratch)", + "nodes": [ + { + "parameters": {}, + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + 0, + 0 + ], + "id": "2101e704-6275-419d-9963-29a142e5811c", + "name": "Esegui manualmente" + }, + { + "parameters": { + "authentication": "privateKey", + "command": "ssh vm101 'pi ingest genome-test raw/articles/il-grano-saraceno.md'" + }, + "type": "n8n-nodes-base.ssh", + "typeVersion": 1, + "position": [ + 224, + 0 + ], + "id": "8ade2def-2d53-4860-88a5-2ca734c6e54a", + "name": "SSH: pi ingest (manuale)", + "credentials": { + "sshPrivateKey": { + "id": "GJQjKzte7Hjdfz89", + "name": "n8n container -> n8n-runner@nexus" + } + } + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "// ultima riga JSON di run-ingest.sh (ha 'run_id=' davanti)\nconst out = ($json.stdout || '').trim();\nconst line = out.split('\\n').filter(l => l.trim().startsWith('{')).pop();\nif (!line) return { status: 'error', reason: 'nessuna riga JSON run-ingest', raw: out };\ntry { return JSON.parse(line); } catch (e) { return { status: 'error', reason: 'JSON non parsabile', raw: line }; }" + }, + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 448, + 0 + ], + "id": "d84cdeaf-612a-454c-8b4d-31824ae6d71e", + "name": "Parse ingest" + }, + { + "parameters": { + "mode": "runOnceForEachItem", + "jsCode": "const d=$json;let n;\nif (d.status==='ok'){\n n={title:`Ingest ${d.slug}: PR aperta`,priority:'default',tags:'inbox_tray',\n body:`\\u2705 ${d.slug}: PR aperta (lint ${d.lint_clean?'clean':'KO'}${d.conflict?', CONFLITTO':''})\\n\\n\\ud83d\\udd17 ${d.pr_url}`};\n} else if (d.status==='pr_failed'){\n n={title:`Ingest ${d.slug}: PR FALLITA`,priority:'high',tags:'warning',\n body:`\\u26a0\\ufe0f ${d.slug}: semantic/lint ok ma PR non aperta.\\n\\n${(d.detail||'').split('\\n')[0]}`};\n} else {\n n={title:'Ingest: ERRORE',priority:'high',tags:'rotating_light',\n body:`\\u274c ${d.reason||'errore'}\\n\\n${(d.raw||'').slice(0,300)}`};\n}\nreturn n;" + }, + "type": "n8n-nodes-base.code", + "typeVersion": 2, + "position": [ + 672, + 0 + ], + "id": "eadd9275-b38c-416b-b15e-0999f70a05fb", + "name": "Build ntfy" + }, + { + "parameters": { + "method": "POST", + "url": "http://ntfy/homelab-genome", + "authentication": "genericCredentialType", + "genericAuthType": "httpBearerAuth", + "sendHeaders": true, + "headerParameters": { + "parameters": [ + { + "name": "Title", + "value": "={{ $json.title }}" + }, + { + "name": "Priority", + "value": "={{ $json.priority }}" + }, + { + "name": "Tags", + "value": "={{ $json.tags }}" + } + ] + }, + "sendBody": true, + "contentType": "raw", + "rawContentType": "Raw / Text", + "body": "={{ $json.body }}", + "options": {} + }, + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.4, + "position": [ + 880, + 0 + ], + "id": "63ab577b-893a-4b3d-8f13-b377be778099", + "name": "ntfy: send notification", + "credentials": { + "httpHeaderAuth": { + "id": "TBPXSWOF63k9mvm8", + "name": "ntfy-token" + }, + "httpBearerAuth": { + "id": "nCv4CUN7Ef086Ewj", + "name": "Bearer Auth account" + } + } + } + ], + "pinData": {}, + "connections": { + "Esegui manualmente": { + "main": [ + [ + { + "node": "SSH: pi ingest (manuale)", + "type": "main", + "index": 0 + } + ] + ] + }, + "SSH: pi ingest (manuale)": { + "main": [ + [ + { + "node": "Parse ingest", + "type": "main", + "index": 0 + } + ] + ] + }, + "Parse ingest": { + "main": [ + [ + { + "node": "Build ntfy", + "type": "main", + "index": 0 + } + ] + ] + }, + "Build ntfy": { + "main": [ + [ + { + "node": "ntfy: send notification", + "type": "main", + "index": 0 + } + ] + ] + } + }, + "active": false, + "settings": { + "executionOrder": "v1", + "binaryMode": "separate" + }, + "versionId": "df06ce3b-1ea8-43be-91ff-02c77972cfe2", + "meta": { + "instanceId": "96b2f0ec76a4400bbd481c617b24b3b87024cc7a913efacccaf9fc85722e7417" + }, + "id": "RNoSaRLYG9vcMn6M", + "tags": [] +} \ No newline at end of file