Setup — how everything connects¶
This section is the build guide: stand up the whole pipeline end-to-end using only Azure DevOps, your existing n8n, and Azure OpenAI.
-
Prerequisites
Accounts, identities and access to line up first.
-
n8n workflow
The full importable workflow: push → draft → PR.
-
Azure Pipelines
CI validation, publish, and docs-site build YAML.
-
End to end
Follow a single change from commit to published page.
The whole picture¶
flowchart TB
subgraph ADO[Azure DevOps]
REPO[Ansible repo]
WIKI[(Code wiki repo)]
PIPE[Pipelines]
end
REPO -->|1. git.push service hook| HOOK{{n8n webhook}}
HOOK -->|2. filter doc-relevant paths| FILTER[Function node]
FILTER -->|3. build prompt| AOAI[Azure OpenAI<br/>chat completion]
AOAI -->|4. markdown draft| COMMIT[Create branch + commit<br/>ADO Git REST]
COMMIT -->|5. open PR| PR[Pull Request<br/>reviewer = page owner]
PR -->|6. triggers| PIPE
PIPE -->|7. wiki-ci: validate| CHECK{Pass?}
CHECK -->|yes| REVIEW[Human review + merge]
REVIEW -->|8. merge to main| PUBLISH[wiki-publish + docs build]
PUBLISH --> SITE[Published site]
REPO -.nightly.-> DRIFT[Drift report → Teams]
classDef ado fill:#0b3b52,stroke:#0891b2,color:#e0f2fe;
classDef ai fill:#3b0764,stroke:#a855f7,color:#f3e8ff;
class REPO,WIKI,PIPE,PR ado;
class AOAI,FILTER ai;
What each hop is¶
| # | Hop | Mechanism | Auth |
|---|---|---|---|
| 1 | Repo → n8n | Azure DevOps service hook (git.push) → n8n Webhook node |
HMAC / basic on the webhook |
| 2 | Filter | n8n Function node keeps only doc-relevant paths | — |
| 3 | Prompt | n8n builds the drafting prompt | — |
| 4 | Draft | HTTP Request node → Azure OpenAI chat completions | Managed Identity or Key Vault key |
| 5 | Commit + PR | HTTP Request nodes → Azure DevOps Git REST API | Workload identity / PAT in Key Vault |
| 6–7 | Validate | Azure Pipeline wiki-ci runs on the PR |
Pipeline service connection |
| 8 | Publish | wiki-publish + docs build on merge to main |
Pipeline service connection |
Everything is reachable because n8n is the hub
n8n receives the event, calls Azure OpenAI, and calls the Azure DevOps API. You never expose the wiki or AOAI publicly — n8n makes outbound calls with managed identity, and the only inbound surface is the single webhook.