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