كيفية تحميل التكوين Firebase في CodeMagic مع متغيرات البيئة

CodeMagic - أداة CI / CD للرفرفة

المشكلة

كنت أقوم بإنشاء مستودع على GitHub و CI على CodeMagic لمشروعي Flutter الجديد ، والذي سيكون باستخدام Firebase. كنت على وشك أن أقدم التزامي الأولي وضربني. لا أريد وضع التهيئة JSON (Android) أو plist (iOS) على GitHub ليراها العالم. (هو خاص حاليًا ، لكن إذا قمت بمصادر خارجية مفتوحة للمشروع ، فقد تكون التفاصيل في سجل الالتزام). وبالتالي فإن المشكلة هي هذا. كيف يمكنني استيراد هذه الملفات إلى خط أنابيب CI / CD ليتم استخدامه كجزء من البنية الجاهزة للاختبار والنشر؟

في البداية ، فكرت في تخزين الملفات في مستودع منفصل (أو موقع آمن) ثم استنساخ الملفات ونقلها إلى مكانها. على الرغم من أنني قادر ، فقد شعرت أن الأمر يتطلب الكثير من البرمجة النصية لشيء يجب أن يكون بسيطًا نسبيًا. يجب أن أضيع خدعة ...

انا كنت.

تنويه: كل هذا ينبع من مؤشر أولي على الرابط CodeMagic Slack هنا.

الحل

المتطلبات الأساسية

  • أنشئ مشروع Firebase واحصل على ملفات تهيئة Android و / أو iOS
  • مشروع CodeMagic

الخطوة 1 - تشفير ملفات التكوين Firebase

يسمح CodeMagic بضبط المتغيرات في سير العمل والتي يمكن استخدامها في أي جزء من عملية البناء أو الاختبار. باستخدام base64 (ما هو base64؟) يمكنك تحميل ملف JSON أو لوحة في سلسلة بدون مسافات. هذا يجعل من الأسهل تعيين للمتغيرات في البرامج النصية.

أولاً ، انتقل في سطر الأوامر إلى المجلد الذي يحتوي على ملفات التكوين الخاصة بك. على الأرجح أحد هذه ، بناءً على ما إذا كان Android أو iOS:

$ PROJECT_ROOT / الروبوت / التطبيق / جوجل-services.json
$ PROJECT_ROOT / دائرة الرقابة الداخلية / عداء / GoogleService-Info.plist

بمجرد الدخول إلى المجلد ، قم بترميز محتويات الملف ، باتباع القسم الخاص بنظام التشغيل أو التفضيل الخاص بك.

Base64 هو نفسه على جميع الأجهزة لذلك لديك بعض الخيارات لإنشاء سلاسل مشفرة ، والتي سأقوم بالتفصيل أدناه.

ماك

openssl base64 - في GoogleService-Info.plist #ios
openssl base64 - في google-services.json #android

لينكس

base64 sample.txt

شبابيك

يبدو أنه يجب عليك إنشاء ملف كإخراج. ستحتاج فقط إلى محتويات ملف الإخراج للخطوة التالية.

certutil - كود الإدخال - اسم الملف encodedOutputFileName

شبكة

استخدام حسب تقديرك. لا أعرف ما الذي يقومون به بالبيانات التي يقومون بترميزها - لن أوصي بهذه الطريقة لأي شيء يتعلق بالمؤسسات / الأعمال ، لكن قد تكون مشاريع الهوايات على ما يرام ولكن جرب أحد الخيارات المذكورة أعلاه أولاً.

https://www.base64encode.org/

الخطوة 2 - إنشاء متغير (متغيرات) البيئة في سير العمل

الآن بعد أن أصبحت لديك القيم المشفرة من الخطوة 1. حصلت على CodeMagic. افتح مشروعك وحصلت على "الإعدادات" وانقر على "متغيرات البيئة" وقم بتوسيعها.

أدخل اسم المتغيرات التي تريدها في "اسم المتغير" ثم الصق القيم المرمزة base64 في "القيمة المتغيرة".

نصيحة: تأكد من النقر فوق العلامة الموجودة على يمين مربع القيمة عند الانتهاء. خلاف ذلك ، لن يتم حفظ هذه ، عند النقر فوق حفظ.

بمجرد تأكيد جميع القيم ، انقر فوق "حفظ".

بيئة المدخلات متغير الشاشة

الخطوة 3 - فك شفرة وإنشاء ملف للبناء

في قسم ما قبل الإنشاء من سير العمل الخاص بك (يعمل في أقسام أخرى إذا كنت تفضل ذلك). انقر على أيقونة "+" وفي المنطقة الموسعة ، أدخل ما يلي (التأكد من تطابق أسماء متغير البيئة مع تلك التي أنشأتها في الخطوة 2).

#! / بن / ش
صدى $ ANDROID_FIREBASE_JSON | base64 - رمز> $ FCI_BUILD_DIR / android / app / google-services.json
صدى $ IOS_FIREBASE_JSON | base64 - الرمز> $ FCI_BUILD_DIR / ios / Runner / GoogleService-Info.plist

بمجرد الدخول يجب أن يبدو شيء من هذا القبيل.

قبل البناء النصي لفك متغيرات البيئة وإنشاء ملفات التكوين

مرة واحدة سعيدة ، انقر فوق "حفظ".

إصلاح: أمر base64 غير موجود

عند تشغيل سير العمل الخاص بك ، تظهر لك رسالة خطأ تفيد بعدم العثور على أمر base64 كما يلي. تحدث هذه المشكلة نظرًا لأن "المتوسط" يضيف بعض أحرف Unicode التي لا يعرضها المستعرض بصريًا وإذا قمت بنسخ ولصق المقتطف أعلاه ، يتم نسخ أحرف Unicode أيضًا. لحل هذه المشكلة ، قم بمسح المسافات بين base64 و - decode (باستخدام مفتاح مسافة للخلف حتى يحذف الرقم 4 في base64 - لأن هذا يشير إلى حذف جميع أحرف Unicode) ثم قم بإضافة 4 والفضاء مرة أخرى.

الخطوة 4 - انتهى!

يمكنك الذهاب. اذهب وانقر على "بناء" ومشاهدة السحر يحدث!

مكافأة صغيرة

إذا كنت تريد أن يكون لديك ملفات في مشروعك محليًا ولكنك لا ترغب في إلزامهم بـ GitHub (أو غير ذلك) ، فقط أضف ما يلي إلى ملف .gitignore الخاص بك.

# Firebase
/android/app/google-services.json
/ios/Runner/GoogleService-Info.plist

فيديو تجريبي

بفضل Jonas De Vrient لإنشاء فيديو لهذا الدليل

https://youtu.be/JBDfmP2NDWo

خاتمة

يمكن أن يؤدي استخدام متغيرات البيئة المدمجة مع base64 إلى بعض الإضافات المفيدة جدًا التي تسمح بمزيد من مرونة سير العمل - على سبيل المثال ، إنشاء التطوير ، إنشاء الإنتاج ، إلخ.

أي أسئلة لا تتردد في التعليق أو سلاك لي (جورج هربرت) على CodeMagic سلاك.