تخطَّ إلى المحتوى

secrets: (GitLab CI/CD)

سحب الأسرار وقت التشغيل في GitLab CI/CD secrets: (GitLab CI/CD)

الكلمة المفتاحية secrets: على مستوى الوظيفة تسحب قيمة سر من مزوّد خارجي (Vault، مدير أسرار سحابي، أو GitLab Secrets Manager) وقت تشغيل الـ job، بدل تخزينها كـ CI/CD Variable ثابتة داخل GitLab.

CI/CD Variables (Settings → CI/CD → Variables) تبقى البداية الافتراضية لأي سر بسيط في GitLab — تُعلَّم Masked لإخفائها من السجلّات وProtected لحصرها على فروع/وسوم محمية، وهي المعادل المباشر لـ GitHub Actions secrets. لأسرار تُدار خارج GitLab نفسه، الكلمة المفتاحية secrets: على مستوى job تسحب القيمة وقت التشغيل من مزوّد خارجي بدل نسخها كمتغيّر ثابت مسبقاً — مدعوم منها vault (HashiCorp Vault)، aws_secrets_manager، azure_key_vault، وgcp_secret_manager.

افتراضياً تصل القيمة كملف مؤقت والمتغيّر نفسه يحمل مسار ذلك الملف لا القيمة مباشرة، لتقليل احتمال تسرّبها في سجلّات أو subprocesses تطبع متغيرات البيئة كاملة؛ file: false يجبر تمرير القيمة مباشرة كمتغيّر عادي إن كان التطبيق لا يدعم قراءة الملف. في أغسطس 2026 (إصدار GitLab 19.3)، أصبح مزوّد gitlab_secrets_manager — مدير أسرار مدمج داخل GitLab نفسه بدل مزوّد خارجي — متاحاً عاماً كإضافة مدفوعة على GitLab.com بعد فترة تجريبية public beta، بنفس بنية secrets: لكن بمزوّد مختلف.

الصياغة

job:
  secrets:
    <اسم المتغيّر>:
      <vault | aws_secrets_manager | azure_key_vault | gitlab_secrets_manager>:
        <إعدادات المزوّد>
      file: <true | false>   # اختياري، الافتراضي true

📄 مثال

deploy:
  stage: deploy
  secrets:
    DATABASE_PASSWORD:
      vault: production/db/password@secret
  script:
    - deploy --password "$DATABASE_PASSWORD"

# أو عبر GitLab Secrets Manager (إضافة مدفوعة منذ GitLab 19.3):
# secrets:
#   DATABASE_PASSWORD:
#     gitlab_secrets_manager:
#       name: db-password

أهم النقاط

العنصرالوظيفة
vaultيسحب السر من HashiCorp Vault وقت تشغيل الـ job
aws_secrets_manager / azure_key_vault / gcp_secret_managerمزوّدات سحابية مدعومة بنفس بنية secrets:
gitlab_secrets_managerمدير الأسرار المدمج داخل GitLab؛ إضافة مدفوعة عامة التوفّر منذ إصدار 19.3 (أغسطس 2026)
file: falseيجبر تمرير قيمة السر كمتغيّر بيئة عادي مباشرة بدل مسار ملف مؤقت (السلوك الافتراضي)

💡 نصائح عملية

  • ابدأ بـ CI/CD Variables العادية (Masked + Protected) لأسرار بسيطة لا تحتاج تدوير (rotation) متكرر أو مصدر خارجي موجود أصلاً
  • استخدم secrets: فقط عندما يكون لديك فعلياً مزوّد أسرار خارجي (Vault أو سحابي) تريد أن يبقى هو مصدر الحقيقة الوحيد، لا نسخة مكررة داخل GitLab

⚠️ أخطاء شائعة

  • الاعتماد على gitlab_secrets_manager كخيار مجاني افتراضي دون التحقق من توفّره كإضافة مدفوعة على خطتك ومنطقتك
  • قراءة متغيّر السر كنص مباشر رغم أن السلوك الافتراضي يمرره كمسار ملف — يفشل التطبيق بصمت أو يستخدم المسار الحرفي كقيمة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DEVOPS الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs