Automated GitLab Merge Request Code Review with n8n

This n8n workflow automates reviewing GitLab merge request code changes using AI for precise feedback and comments. It saves developers hours by providing quick, detailed code review suggestions directly within GitLab.
Webhook
If
HTTP Request
+4
Workflow Identifier: 1705
NODES in Use: Webhook, If, HTTP Request, Split Out, Code, Sticky Note, Langchain Chain LLM

Press CTRL+F5 if the workflow didn't load.

Learn how to Build this Workflow with AI:

Visit through Desktop for Best experience

What This Workflow Does

This workflow helps automate code reviews on GitLab merge requests. It listens for a special comment trigger, then fetches the changes made in the request. Next, it asks an AI to check the code and gives feedback right inside GitLab. This saves time and finds problems faster.

The workflow breaks down changed files and skips irrelevant ones. It looks at diffs line by line. Then, AI decides if the change is good or not and scores it. Finally, the AI comments on the exact code lines in the merge request discussion.


Who Should Use This Workflow

Teams or developers who get many merge requests and want faster reviews. Also, anyone who wants to catch bugs and style issues early using AI. It’s good if manual reviews take too long or miss details.

The user of this workflow needs basic GitLab and n8n knowledge and must set API keys for GitLab and OpenAI. It’s also helpful for teams wanting consistent review comments.


Tools and Services Used

  • GitLab API: Gets merge request data and posts comments.
  • OpenAI API: Runs AI language model to review code.
  • n8n Automation Platform: Coordinates workflow steps and triggers.

This workflow can run on self-hosted n8n if preferred. For example, see self-host n8n.


Beginner Step-by-Step: How to Use This Workflow in n8n

Import Workflow

  1. Download the pre-built workflow file using the Download button on this page.
  2. Open your n8n editor and select Import from File.
  3. Upload the downloaded workflow file to add it into your workspace.

Configure Credentials

  1. Add your GitLab personal access token in the credentials section with required API permissions.
  2. Add your OpenAI API key to n8n credentials for language model access.

Update Workflow Settings

  1. In the Webhook node, confirm the webhook path or customize it if needed.
  2. Update variables like project_id and merge_request_iid if your workflow uses static values (usually these are dynamic).
  3. Check that the trigger comment in Need Review1 matches the phrase your team will use (default is +0).
  4. Review prompts in the Basic LLM Chain1 to ensure AI feedback fits your team’s needs.

Test and Activate

  1. Post a comment with the trigger phrase on a test GitLab merge request to fire the webhook.
  2. Check n8n execution to see if the workflow runs successfully and AI comments appear in GitLab.
  3. When satisfied, toggle the workflow status to Active for production use.

Inputs, Processing, and Outputs

Inputs

  • GitLab webhook events for new comments on merge requests.
  • GitLab API data for merge request changes.
  • User-defined trigger phrase in comments to start review.

Processing Steps

  • Filter comments to find review triggers.
  • Fetch detailed changes of merge requests via GitLab API.
  • Split file changes and ignore non-code diffs such as renames or deletes.
  • Parse git diff lines to find original vs new code and the exact line numbers.
  • Send code segments to OpenAI language model with a prompt for review decision, comments, and score.
  • Post AI feedback back to the GitLab merge request lines as inline comments.

Outputs

  • Automated AI review comments on precise code lines in GitLab merge requests.
  • A decision status of accept or reject for each changed file segment.
  • Change scores and suggested fixes provided by AI.
  • Time saved by developers in manual review efforts.

Edge Cases and Failure Points

  • If GitLab webhook is not set to trigger on note events, the workflow will not start.
  • Incorrect or missing GitLab API key causes failed fetch or post operations.
  • OpenAI API key errors or quota limits stop AI review from generating feedback.
  • Large merge requests may need tuning because AI reviews happen per file segment.
  • The review trigger phrase must match exactly in the Need Review1 filter or reviews won’t start.

Customization Ideas

  • Change the review trigger phrase in the Need Review1 node to fit team language.
  • Edit the AI prompt in Basic LLM Chain1 to add security checks or style guides.
  • Add new file type filters in the Skip File Change1 node to skip docs or config files.
  • Swap OpenAI with other AI models by changing the OpenAI Chat Model1 node for preferred LLM services.
  • Modify comment formatting in the Post Discussions1 node to add links to team docs or issue trackers.

Sample Code and Prompt Snippets

Parsing Last Diff Line JavaScript

This code block pulls line numbers to post comments on:

const parseLastDiff = (gitDiff) => {
 gitDiff = gitDiff.replace(/\n\\ No newline at end of file/, '')
 const diffList = gitDiff.trimEnd().split('\n').reverse();
 const lastLineFirstChar = diffList?.[0]?.[0];
 const lastDiff = diffList.find(item => /^@@ \-\d+,\d+ \+\d+,\d+ @@/g.test(item)) || '';
 const [lastOldLineCount, lastNewLineCount] = lastDiff
  .replace(/@@ \-(\d+),(\d+) \+(\d+),(\d+) @@.*/g, ($0, $1, $2, $3, $4) => `${+ $1 + +$2},${+ $3 + +$4}`)
  .split(",");
 if (!/^\d+$/.test(lastOldLineCount) || !/^\d+$/.test(lastNewLineCount)) {
  return { lastOldLine: -1, lastNewLine: -1, gitDiff };
 }
 const lastOldLine = lastLineFirstChar === '+' ? null : (parseInt(lastOldLineCount) || 0) - 1;
 const lastNewLine = lastLineFirstChar === '-' ? null : (parseInt(lastNewLineCount) || 0) - 1;
 return { lastOldLine, lastNewLine, gitDiff };
};

return parseLastDiff($input.item.json.diff);

Code to Separate Original and New Code

This separates lines by diff sign:

var diff = $input.item.json.gitDiff;
let lines = diff.trimEnd().split('\n');
let originalCode = '';
let newCode = '';
lines.forEach(line => {
 if (line.startsWith('-')) {
  originalCode += line + "\n";
 } else if (line.startsWith('+')) {
  newCode += line + "\n";
 } else {
  originalCode += line + "\n";
  newCode += line + "\n";
 }
});
return {
 originalCode: originalCode,
 newCode: newCode
};

Summary / Result

✓ Saves hours of manual code review by automating feedback generation.
✓ Gives clear accept/reject decisions on code changes.
✓ Posts precise comments inside the GitLab merge request discussion.
✓ Improves code quality and catches potential issues faster.
✓ Enables consistent, AI-assisted reviews that scale with team needs.


Frequently Asked Questions

The workflow starts when a comment matches the configured trigger phrase, usually ‘+0’, on a GitLab merge request.
It uses the GitLab API with a personal access token to post inline discussions tied to specific changed lines in the merge request.
Yes, users can modify the prompt in the Basic LLM Chain1 node to include style guides or security checks.
Check if the webhook URL is correctly registered in GitLab settings with note events enabled.

Promoted by BULDRR AI

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation Workflows in n8n

A complete beginner guide to building an AI SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free