مستندات n8n
74+ نود
🦊

گیت‌لب

GitLab

مدیریت خودکار Issues، Merge Requests، Pipelines و CI/CD در GitLab

ابزارهای توسعه
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود GitLab چیست؟

نود GitLab امکان اتصال و خودکارسازی فرآیندهای DevOps را در n8n فراهم می‌کند. GitLab یک پلتفرم all-in-one برای توسعه نرم‌افزار است که با بیش از ۳۰ میلیون کاربر یکی از محبوب‌ترین ابزارهای DevOps در جهان است.

قابلیت‌های کلیدی:

  • مدیریت Issues: ایجاد، ویرایش، بستن، label و assign کردن issues
  • Merge Requests: ایجاد MR، مدیریت review، approve و merge
  • Pipelines: مشاهده وضعیت، trigger و cancel کردن CI/CD pipelines
  • Repository: مدیریت branches، tags، files و commits
  • Releases: ایجاد release و مدیریت milestones
  • Users & Groups: مدیریت دسترسی‌ها و اعضای گروه
  • Webhooks: دریافت event‌ها از GitLab

مزایای GitLab نسبت به GitHub:

  • Self-hosted: امکان نصب روی سرور شخصی (مهم برای ایران)
  • CI/CD یکپارچه: بدون نیاز به سرویس جداگانه
  • Container Registry: ذخیره و مدیریت Docker images
  • Security Scanning: اسکن امنیتی خودکار کد
  • Package Registry: میزبانی پکیج‌های npm، PyPI، Maven و...

محدودیت‌های API:

  • Authenticated: ۲,۰۰۰ درخواست در دقیقه (GitLab.com)
  • Self-hosted: قابل تنظیم توسط admin
  • Search API: ۱۰ درخواست در دقیقه

احراز هویت

احراز هویت GitLab

روش ۱: Personal Access Token (ساده‌ترین)

  1. 1به User Settings > Access Tokens بروید
  2. 2نام، تاریخ انقضا و scopes را تنظیم کنید:
  • api: دسترسی کامل API
  • read_api: فقط خواندن
  • read_user: اطلاعات کاربر
  • read_repository: خواندن repo
  • write_repository: نوشتن در repo
  1. 1Token را کپی و در n8n وارد کنید

روش ۲: Project Access Token (توصیه شده)

مناسب برای دسترسی محدود به یک project خاص:

  1. 1به Project > Settings > Access Tokens بروید
  2. 2نام، role و scopes را تنظیم کنید
  3. 3Role‌ها: Guest, Reporter, Developer, Maintainer

مزایا:

  • دسترسی فقط به project مشخص
  • قابل مدیریت توسط project maintainers
  • بدون وابستگی به اکانت شخصی

روش ۳: Group Access Token

مناسب برای دسترسی به همه projects یک group:

  1. 1به Group > Settings > Access Tokens بروید
  2. 2مشابه Project Access Token تنظیم کنید

روش ۴: OAuth2

  1. 1در Admin Area > Applications یک OAuth app بسازید
  2. 2Client ID و Client Secret را در n8n وارد کنید
  3. 3Redirect URI را تنظیم کنید

تنظیم GitLab Self-Hosted در n8n:

اگر از GitLab self-hosted استفاده می‌کنید:

  1. 1در n8n credential، GitLab Server URL را وارد کنید
  2. 2مثال: https://gitlab.mycompany.com
  3. 3مطمئن شوید سرور از n8n قابل دسترسی است
  4. 4SSL Certificate معتبر داشته باشد (یا self-signed تنظیم کنید)

عملیات‌های موجود

1

issue-create

ایجاد issue جدید در project

2

issue-update

ویرایش issue موجود

3

issue-list

دریافت لیست issues با فیلتر

4

issue-note

ارسال یادداشت روی issue

5

mr-create

ایجاد merge request جدید

6

mr-merge

Merge کردن merge request

7

mr-approve

Approve کردن merge request

8

mr-list

دریافت لیست MRها

9

pipeline-list

دریافت لیست CI/CD pipelines

10

pipeline-trigger

اجرای CI/CD pipeline جدید

11

pipeline-cancel

لغو یک pipeline در حال اجرا

12

pipeline-retry

اجرای مجدد jobهای failed در pipeline

13

repo-file-get

خواندن محتوای فایل از repository

14

repo-branch-list

دریافت لیست branches

15

release-create

ایجاد release جدید

کاربردهای متداول

کاربردهای رایج

۱. اطلاع‌رسانی Pipeline Failure

وقتی CI/CD pipeline شکست بخورد، تیم توسعه از طریق تلگرام یا Slack مطلع شود.

code
GitLab Trigger (Pipeline Hook - failed) → Telegram (ارسال پیام با جزئیات خطا)

۲. Auto-Merge پس از Approve

وقتی MR approve شود و pipeline موفق باشد، خودکار merge شود.

code
GitLab Trigger (MR Hook - approved) → GitLab (merge when pipeline succeeds)

۳. Deployment Notification

پس از موفقیت pipeline در branch production، تیم از deploy مطلع شود.

code
GitLab Trigger (Pipeline - success on main) → IF (branch = main) → Slack + Email (اطلاع‌رسانی)

۴. Issue Triage خودکار

بر اساس محتوا و labels، issues خودکار به افراد مناسب assign شود.

code
GitLab Trigger (Issue Hook) → Code (تحلیل labels) → GitLab (assign به developer مرتبط)

۵. همگام‌سازی Issues با Jira

وقتی issue در GitLab ایجاد شود، خودکار در Jira هم ساخته شود.

code
GitLab Trigger (Issue - opened) → Jira (ایجاد issue) → GitLab (اضافه کردن Jira link به کامنت)

۶. Security Alert Monitoring

اسکن نتایج SAST/DAST و ارسال alert برای آسیب‌پذیری‌های بحرانی.

code
Schedule (هر ساعت) → GitLab (لیست vulnerabilities) → Filter (critical/high) → Email + Telegram

۷. Release Notes Generator

خودکار release notes از MRهای merge شده generate شود.

code
GitLab Trigger (Tag Push) → GitLab (لیست MRs) → Code (ساخت changelog) → GitLab (ایجاد release)

۸. Code Review Reminder

هر روز MRهای بدون review بیش از ۲۴ ساعت پیدا شده و به reviewer یادآوری شود.

code
Schedule (روزانه) → GitLab (لیست open MRs) → Filter (بدون review > 24h) → Slack (mention reviewer)

۹. Environment Cleanup

Environments قدیمی و غیرفعال را خودکار حذف کنید.

code
Schedule (هفتگی) → GitLab (لیست environments) → Filter (stopped > 30 days) → GitLab (delete environment)

۱۰. Multi-Project Pipeline Dashboard

وضعیت pipeline آخرین commit همه projects را در یک داشبورد نمایش دهید.

code
Schedule (هر ۵ دقیقه) → GitLab (لیست projects) → GitLab (آخرین pipeline هر project) → Google Sheets (update dashboard)

نکات حرفه‌ای

نکات حرفه‌ای

۱. از Project Access Token استفاده کنید

بجای Personal Token، از Project Access Token برای دسترسی محدود و امن‌تر استفاده کنید. وابستگی به اکانت شخصی ندارد.

۲. Self-Hosted GitLab در ایران

GitLab self-hosted گزینه عالی برای تیم‌های ایرانی است: بدون نیاز به VPN، کنترل کامل داده‌ها، و سرعت بالاتر.

۳. Pipeline Variables

از pipeline variables برای پاس دادن پارامتر از n8n به CI/CD استفاده کنید. مثلاً: version number، environment name، یا feature flags.

۴. Merge Request Templates

از MR templates استفاده کنید تا همه MRها ساختار یکسانی داشته باشند. n8n می‌تواند خودکار template را پر کند.

۵. GitLab GraphQL API

برای کوئری‌های پیچیده از GraphQL API استفاده کنید (/api/graphql). با HTTP Request node و یک query می‌توانید چندین resource را دریافت کنید.

۶. Container Registry Integration

از GitLab Container Registry برای مدیریت Docker images استفاده کنید. n8n می‌تواند خودکار images قدیمی را cleanup کند.

۷. Environment Variables مخفی

اطلاعات حساس مثل API keys را در CI/CD Variables ذخیره کنید (masked + protected). از n8n می‌توانید variables را مدیریت کنید.

۸. Multi-Project Pipelines

از downstream pipeline trigger برای اجرای pipeline در project‌های وابسته استفاده کنید.

۹. Approval Rules

قبل از auto-merge، بررسی کنید آیا تعداد approve‌های کافی دریافت شده. از approvals_before_merge استفاده کنید.

۱۰. Issue Weight برای Sprint Planning

از Issue weight برای تخمین effort استفاده کنید. n8n می‌تواند خودکار burndown chart بسازد.

۱۱. GitLab Pages برای Documentation

از GitLab Pages برای host کردن مستندات استفاده کنید. n8n می‌تواند خودکار docs را از code generate و deploy کند.

۱۲. Protected Branches & Tags

مطمئن شوید operations خودکار (merge, push) با branch protection rules سازگار است. از deploy tokens برای CI/CD استفاده کنید.

۱۳. Audit Log Monitoring

از GitLab Audit Events API برای monitoring فعالیت‌های حساس استفاده کنید. n8n می‌تواند alert‌ها را خودکار ارسال کند.

۱۴. URL-Encoded Project Path

در API calls، اگر project path شامل / است، باید URL-encode شود: group%2Fproject.

۱۵. Pagination با keyset

برای لیست‌های بزرگ از keyset pagination بجای offset pagination استفاده کنید. بسیار سریع‌تر است.

رفع مشکلات

رفع مشکلات رایج

❌ خطای 401 Unauthorized

علت: Token نامعتبر یا منقضی شده

راه‌حل

  • Token را بررسی و در صورت نیاز regenerate کنید
  • مطمئن شوید Token هنوز active است
  • برای self-hosted GitLab، URL صحیح تنظیم شده باشد

❌ خطای 403 Forbidden

علت: دسترسی کافی ندارید

راه‌حل

  • Scopes توکن را بررسی کنید (api برای دسترسی کامل)
  • نقش شما در project باید Developer یا بالاتر باشد
  • برای merge، نقش Maintainer لازم است
  • Rate limit ممکن است تمام شده باشد

❌ خطای 404 Not Found

علت: Project یا Resource پیدا نشد

راه‌حل

  • از Project ID عددی یا URL-encoded path استفاده کنید
  • مثال: group%2Fsubgroup%2Fproject بجای group/subgroup/project
  • مطمئن شوید Token به project دسترسی دارد

❌ خطای 409 Conflict

علت: تداخل در عملیات

راه‌حل

  • برای MR merge، conflict‌ها را ابتدا resolve کنید
  • برای file operations، آخرین commit SHA را استفاده کنید

❌ Pipeline اجرا نمی‌شود

علت: مشکل در trigger یا configuration

راه‌حل

  • مطمئن شوید .gitlab-ci.yml صحیح است
  • Pipeline trigger token معتبر باشد
  • Runner‌های فعال وجود داشته باشد
  • Branch محافظت‌شده ممکن است pipeline را block کند

❌ Webhook Event دریافت نمی‌شود

علت: تنظیمات Webhook نادرست

راه‌حل

  • URL باید publicly accessible باشد
  • در Project > Settings > Webhooks events فعال باشد
  • SSL verification را بررسی کنید (برای self-signed، غیرفعال کنید)
  • در Recent Events خطاها را بررسی کنید

❌ خطای Rate Limit (429)

علت: تعداد درخواست‌ها از حد مجاز عبور کرده

راه‌حل

  • GitLab.com: ۲,۰۰۰ req/min
  • Self-hosted: از admin بخواهید limit را افزایش دهد
  • Wait node بین درخواست‌ها اضافه کنید

❌ خطای "Merge blocked: pipeline must succeed"

علت: Pipeline هنوز در حال اجرا یا failed است

راه‌حل

  • از merge_when_pipeline_succeeds: true استفاده کنید
  • یا ابتدا وضعیت pipeline را بررسی کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟