بواسطة فريق Productivities • الرياض، المملكة العربية السعودية
كيف تلصق مفتاح حساب خدمة JSON في سرّ GitHub Actions دون إفساده
إذا سبق وقمت بإعداد مهمة Google Indexing API أو Firebase Admin SDK أو أي workflow في GitHub يحتاج إلى حساب خدمة Google Cloud، فقد اصطدمت غالباً بهذه المشكلة: تحفظ مفتاح JSON كسرّ مستودع، ينطلق التشغيل، ثم يفشل فوراً بخطأ مثل SyntaxError: Unexpected token in JSON at position 162.
في تسع من كل عشر حالات يكون JSON نفسه سليماً. المشكلة هي فواصل أسطر غير مرئية بقيت داخل قيمة السرّ.
لماذا تكره أسرار GitHub ملفات JSON متعددة الأسطر
ملف مفتاح حساب الخدمة عند تنزيله من Google Cloud يأتي منسقاً على عدة أسطر. القيم المخزّنة داخل private_key تستخدم \n كرموز هروب صحيحة، لكن الملف يحتوي أيضاً على أسطر فعلية بين كل زوج مفتاح/قيمة. تلك الأسطر الفعلية هي ما يحفظه GitHub كفواصل أسطر داخل قيمة السرّ، وغالباً ما تتلف عند مرورها عبر الـ shell أو الـ runner.
الحل: حوّله إلى سطر واحد قبل اللصق
الحل الأسلم هو تسطيح JSON إلى سطر واحد قبل لصقه في السرّ. JSON المضغوط لا يحتوي على أي مسافات هيكلية، فلا يوجد ما يمكن لمخزن الأسرار أو الـ shell أو الـ runner أن يفسده.
الطريقة الأسهل (بدون terminal وبدون رفع)
افتح منسق JSON، الصق محتويات ملف حساب الخدمة، ثم انقر "مضغوط (سطر واحد)". الناتج سيكون سطراً واحداً تبقى فيه جميع فواصل الأسطر داخل private_key مهرّبة بشكل صحيح كـ \n. انسخه والصقه في سرّ GitHub، وسيعمل workflow من المحاولة الأولى.
لماذا هذا آمن:
- يعمل بالكامل في المتصفح. JSON لا يغادر جهازك أبداً.
- يتم التحقق من JSON أولاً. إذا كان الملف تالفاً ستحصل على رسالة خطأ واضحة قبل أن تنسخ أي شيء.
- يحافظ على التهريب الصحيح. الأسطر الجديدة داخل القيم النصية تبقى كـ
\n.
خطوة بخطوة
- نزّل مفتاح JSON من Google Cloud Console.
- افتح الملف وانسخ محتواه بالكامل.
- افتح منسق JSON والصقه.
- انقر "مضغوط (سطر واحد)".
- انسخ الناتج.
- في GitHub: Settings → Secrets and variables → Actions → New repository secret. سمِّه (مثل
INDEXING_SERVICE_ACCOUNT) والصق القيمة. - أعد تشغيل الـ workflow.
تنبيهات شائعة
- لا تضع علامتي اقتباس حول القيمة. GitHub يخزّنها كما هي.
- تحقق من القوس الأخير
}— أحياناً يُفقَد آخر حرف عند النسخ. - غيّر المفتاح بعد التصحيح إذا كنت قد لصقته في أي مكان غير آمن.
جاهز؟ افتح منسق JSON وانقر "مضغوط (سطر واحد)" — يستغرق ثلاث ثوانٍ ويوفّر ساعات من البِناءات الفاشلة.
شارك هذا المقال
جرّب الأداة المذكورة في هذا المقال
JSON Formatter