GitHub Actions هي أداة CI / CD قوية لتشغيل الإنشاءات الآلية من مستودع GitHub الخاص بك.
GitHub Actions هي أداة CI / CD قوية لتشغيل الإنشاءات الآلية من مستودع GitHub الخاص بك. الخطوة الأخيرة من هذه العملية هي النشر ، والتي تتضمن تحميل عناصر البناء في مكان يمكن الوصول إليه بسهولة. AWS S3 هو التخزين المفضل للعديد من الأشخاص ، ويسهل تكامله مع البرامج النصية للإجراءات.
لماذا تستخدم حاويات AWS S3 للنشر؟
تجدر الإشارة إلى أن GitHub Actions لديها ملف نظام تخزين القطع الأثرية الأساسي، ومع ذلك ، لن ترغب في استخدام هذا في الإنتاج. إنه لأغراض الأرشفة والاختبار ، وستنتهي صلاحية القطع الأثرية من الإنشاءات المكتملة بعد 90 يومًا.
هناك ايضا حزم جيثب، والتي تم تصميمها كبديل لمديري الحزم الخاصة بلغة معينة مثل JavaScript
npm
. يمكن أن يكون هذا مفيدًا جدًا إذا كنت تنشر حزمة NPM ، ولكنه ليس مفيدًا لأنواع أخرى من البنيات.
بالنسبة لكل نوع آخر من العناصر الأثرية ، تظل حاويات S3 من Amazon إحدى طرق الانتقال لتحميل الملفات للتوزيع والنشر. إنها مدعومة بنظام أذونات AWS’s IAM ، والذي يتمتع بأمان ممتاز وقادر على ضبط عناصر التحكم في الوصول إلى التعليمات البرمجية المصدر المجمعة.
بدلاً من ذلك ، إذا كنت تستخدم حاويات Docker للنشر ، فستحتاج إلى استخدام سجل الحاوية بدلاً من ذلك. لحسن الحظ ، لدى GitHub سجل خاص يسهل الاندماج معه وأنت يمكن قراءة دليلنا لاستخدامه لتعلم المزيد.
يعد استخدام S3 أمرًا سهلاً إلى حد ما ، وستنطبق معظم الخطوات الموضحة هنا أيضًا على حلول التخزين المتوافقة مع S3 ، مثل Digital Ocean Spaces أو MinIO المستضافة ذاتيًا ، نظرًا لأنها تستخدم نفس واجهة برمجة التطبيقات.
تحميل إلى AWS S3 من إجراءات GitHub
للبدء ، ستحتاج إلى التأكد من أن باقي النص البرمجي لإنشاء إجراءات GitHub الخاص بك يعمل وينتج بنية صالحة ، لأنك بشكل عام لا تريد تصحيح أخطاء متعددة في وقت واحد.
إذا لم يكن لديك واحدة حتى الآن ، فسيعتمد الإعداد على سلسلة أدوات البناء الخاصة بك ، ولكن يمكنك ذلك اقرأ دليلنا لإعداد البنيات المؤتمتة لتعلم المزيد. يمكنك أيضًا اختبار الأداة التي سيتم تحميلها باستخدام GitHub المدمج
upload-artifact
الإجراء ، الذي ينشر محتويات الدليل كحزمة.
يمكنك بعد ذلك تأكيد إنشاء الحزمة في الملخص> القطع الأثرية.
بمجرد أن يكون لديك تصميم لا يفشل ، يمكنك إضافة تحميل S3 إلى نهايته. لا توجد طريقة رسمية للقيام بذلك بسهولة ، و توجد العديد من الحلول المختلفة في GitHub Actions Marketplace.
الاكثر شعبية هو مزامنة S3، والذي يستخدم واجهة برمجة تطبيقات S3 الأصلية لتحميل العناصر المدمجة ، ويسهل تكوينه. هناك أيضًا أغلفة بسيطة مثل s3cmd، والتي تتيح لك تمرير الأوامر مباشرة إلى S3 CLI.
ملاحظة واحدة – يعتمد معظمها على المتسابقين المستضافين على نظام Linux أو حاويات Docker ، والتي تأتي مع التبعيات اللازمة لتشغيل S3 CLI. Linux هو ما تعمل عليه غالبية البنيات ، ولكن إذا كنت بحاجة إلى استخدام Windows لتشغيل البنيات الخاصة بك ، فستحتاج إلى استخدام إجراء مختلف. المنصة المشتركة التي وجدنا أنها تعمل هي stcalica / s3-upload. يستخدم هذا غلاف JavaScript يقوم بتثبيت الحزمة s3cmd ، ويعمل بشكل جيد على Windows.
شيء واحد عليك القيام به أولاً هو إعداد GitHub Secrets لرموز مصادقة AWS الخاصة بك. لا يمكن أن تكون هذه علنية بالطبع ، وستحتاج إلى تخزينها في أسرار المستودع والوصول إليها بالاسم. هذا يمنع التسرب العرضي للرموز الخاصة بك ، ويسمح بإدارة المفاتيح بسهولة.
يمكنك أن تقرأ دليلنا حول استخدام GitHub Secrets لمعرفة المزيد عنها ، ولكن الشيء الرئيسي المطلوب منك هو التوجه إلى إعدادات المستودع ، ثم النقر فوق الأسرار> الإجراءات وإنشاء
بعد ذلك ، في نهاية النص البرمجي لإجراءات GitHub ، أضف خطوة “نشر” مسماة ، واضبطها لاستخدام s3- مزامنة العمل ، أو أيهما اخترته. ستحتاج إلى تمرير الأسرار الخاصة بمفتاح الوصول والمعرف اللذين قمت بتكوينهما كمتغيرات بيئة.
... - name: Deploy To S3 - uses: actions/checkout@master - uses: jakejarvis/s3-sync-action@master with: args: --acl public-read --follow-symlinks --delete env: AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-east-1' # optional: defaults to us-east-1 SOURCE_DIR: 'bin/Linux/net48' # optional: defaults to entire repository DEST_DIR: '/' # optional: defaults to root of the bucket
باستخدام سير العمل هذا على وجه الخصوص ، يمكنك أيضًا تمرير الوسائط مباشرة إلى s3cmd ، والتي يمكن استخدامها لتشغيل قوائم ACL للقراءة العامة ، على سبيل المثال. هنا ، يتم تعيين الكائن على الوضع العام ، ويتم مسح المحتويات القديمة في ذلك الدليل في الحاوية ، مما يضمن أن كل شيء يتطابق مع مخرجات الإنشاء مع عدم وجود ملفات قديمة.
مع إضافة ذلك ، كل ما تبقى هو الالتزام بتغييرات البرنامج النصي للبناء ، وإعادة تشغيل الإنشاء يدويًا اختياريًا إذا لم يبدأ تلقائيًا مرة أخرى في التزام جديد. لن ترى أي مخرجات بناء في GitHub ، لأنه تم إرسالها إلى S3 ، ولكن يمكنك التحقق من السجلات من s3cmd ضمن خطوة “النشر إلى S3” في سجل الإنشاء:
نأمل أن ترى إخراج سجل مشابه للإخراج أعلاه ، مما يؤكد تشغيل العملية بنجاح.