چرخوندن خبرنامه SoftwareTalks با گیتهاب

چرخوندن خبرنامه SoftwareTalks با گیتهاب


توی این پست خواهید دید که خبرنامه‌ SoftwareTalks چطوری کار میکنه؛ یک عدد سایت استاتیک + یک عدد فایل گیتهاب اکشن +‌ ایشو‌های گیتهاب +‌ یک سرویس ارسال ایمیل + کمی زمان برای نوشتن اسکریپتی که همه این چیزمیزا رو به هم وصل کنه.داستان خبرنامه SoftwareTalks اینطوری شروع شد که من یک روز توی خونه نشسته بودم و از خستگی قرنطینه حوصله‌ام سر رفته بود و تصمیم گرفتم یک کاری بکنم. همون شب یک خبرنامه درست کردم به اسم خبرنامه مهندسان نرم‌افزار.اولین خبرنامه‌ای که درست کردم یک روز خیلی اتفاقی دیدم توی توییتر توسط دوستام منشن شدم زیر این توییت از حامد سعیدی که قصد داره یک‌سری Side Project پیش ببره و یکیش خبرنامه برای برنامه‌نویس‌ها بود. از اونجا من با حامد سعیدی برای این موضوع صحبت کردم و قرار شد تحت عنوان خبرنامه SoftwareTalks پیش ببریمش. من ابتدا برای این موضوع یک برنامه با Laravel درست کرده بودم و توی سرویس ابری لیارا اجراش کرده بودم. ولی به پیشنهاد خوب حامد سعیدی از امکانات گیتهاب قرار شد استفاده کنیم. اما بریم ببینیم چطوری کار میکنه.توی خبرنامه SoftwareTalks ما همه چیز رو روی بستر گیتهاب هاست کردیم. نمایش سایت‌مون به عهده GitHub Pages هستش. روی برنچ Main (یا هر برنچ دلخواهی که بخوایم) یک فایل index.html داریم و گیتهاب اون رو نمایش میده و مثل یک وب‌سرور رفتار میکنه. به همین سادگی و زیبایی.اما همونطور که میدونید خبرنامه SoftwareTalks یک خبرنامه مبتنی بر مشارکت کاربران‌ هستش، یعنی کاربران محتوا رو تامین میکنند. اما چطوری؟ به وسیله GitHub Issues. هر کاربر با ایجاد یک Issue طبق تمپلیتی که قرار دادیم، میتونه یک پست ایجاد کنه. به همین راحتی.خبرنامه SoftwareTalks هر هفته ارسال میشه. اما ما چطوری میفهمیم هر پست ماله چه هفته‌ایه و اصلا صلاحیت ارسال شدن داره؟ با سه تا label که بهشون میزنیم: content, verified, this-weekهر پست به محض ایجاد شدن لیبل content میگیره. بعد از بررسی توسط ادمین‌های ریپوزیتوری، اگر پست طبق قوانین باشه، لیبل verified میگیره. در نهایت اگر بخوایم پستی رو توی هفته جاری ارسال کنیم بهش لیبل this-week میزنیم. و هر وقت هم که پست ارسال بشه اون Issue رو میبندیم (بستن Issue فعلا خودکار نیست و دستی انجام میدیم ولی به زودی خودکارش میکنیم). زیبا نیست؟ به همین سادگی میشه ساختاری برای مشخص کردن وضعیت هر پست توی گیتهاب درست کرد.ما برای ارسال ایمیل‌هامون در حال حاضر از سرویس پاکت استفاده میکنیم. اما خود فرآیند ارسال ایمیل چطور صورت میگیره؟ با یک اسکریپت که با PHP نوشته شده. توی این اسکریپت ما از API گیتهاب استفاده میکنیم و پست‌هایی که این سه تا لیبل رو گرفته باشن رو دریافت میکنیم و توی یک تمپلیت HTML ای که درست کردیم، میچوپونیم. تا این‌جای کار ما قالب ایمیل‌مون و محتواش اکی شده. در گام بعدی اسکریپت میره به سرویس پاکت متصل میشه و به پاکت میگه که این فایل HTML رو برای این لیست آدم‌ها ایمیل کن.اما چطوری به گیتهاب میگیم یک اسکریپت رو اجرا کن؟ به وسیله GitHub Actionsگیتهاب اکشن در حقیقت یک فایله که توصیف میکنه چه کار باید بشه (فرض کنین یک اسکریپته. البته فرض که چه عرض کنم خب واقعا یک اسکریپته). از اینجا فایل اکشن‌ خبرنامه رو میتونید ببینید.همونطور که دیدید، گیتهاب امکانات جالب و خوبی رو به رایگان در اختیار توسعه‌دهنده‌ها قرارداده که خوبه ازشون نهایت استفاده رو بکنیم. امیدوارم این پست به دوستانی که با این مباحث و پتانسیلی که میتونن داشته باشن، آشنا نبودن، کمک کرده باشه. راستی اگر دوست داشتید عضو خبرنامه هم بشید میتونید از اینجا اقدام کنید: https://newsletter.softwaretalks.irشاد و پیروز باشید.

منبع

Author: admin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *