چند وقتی بود که خیلی دلم میخواست یه دستی به سر و گوش پروفایل گیتهاب خودم بکشم و یکم از اون سادگی درش بیارم تا هم خودم با نگاه کردن بهش احساس خوبی بگیرم هم یه رزومه کوچیک باشه از کارایی که کردم یا اطلاعاتی که دلم میخواد اونجا دیده بشه. یکی از همین مواردی که دلم میخواست بتونم تو پروفایل گیتهابم نشونش بدم پستهایی بود که جاهای مختلف مثل ویرگول یا Medium منتشرش میکردم. اما از اونجایی که اصن نه حوصله آپدیت کردنش بعد از منتشر کردن هر پست رو داشتم و نه حتی وقتش رو واسه همین یه سرچی کردم تا ببینم راه حل مناسبی واسش پیدا میکنم یا نه.
بعد از یکم جستجو رسید به یه راه حل باحال که بهم این امکان رو میداد تا Feed وبسایتهای مختلف رو با استفاده از GitHub Action بگیرم و با استفاده از اون کاری که میخوام رو انجام بدم اما خب فقط همین مورد کفایت نمیکرد من باید یه راه حلی پیدا میکردم که این کار به صورت خودکار با فواصل زمانی مشخص تکرار بشه تا دیگه نیاز نباشه من هر چند وقت یبار خودم دستی این Action رو اجرا کنم واسه همین یکم بیشتر سرچ کردم و متوجه شدم که برای Action هایی که داخل GitHub تعریف میکنیم میتونیم همچین تنظیمی رو ست کنیم تا به صورت خودکار با فواصل زمانی مشخص اجرا بشن اگر با Cron Job آشنایی داشته باشید حتما میدونید در مورد چی صحبت میکنم. حالا بیاید یکم جلوتر بریم و ببینیم دقیقا چه کاری لازم بود تا انجام بدم:
اول از همه این نکته رو بگم که اگه میخواید پروفایل GitHub خودتون رو آپدیت کنید اول از هر کاری باید یه Repository دقیقا با اسم پروفایل خودتون درست کنید. با این کار فایل README.md این Repository به عنوان پروفایل شما به بقیه نشون داده میشه.
خب حالا برای شروع لازمه یه نگاه به یکی از Repositoryهای GitHub بندازیم که یه اکشن خیلی خوب به اسم blog-post-workflow برای این مورد نوشته و ما هم قراره از همون استفاده کنیم. اما توی این Action هیچ صحبتی از این نشده که ایا برای پستهای ویرگول میتونیم ازش استفاده بکنیم اما بیاید بریم جلو تا ببینیم میتونیم ازش استفاده کنیم یا نه.
خب برای شروع من اول از پستهایی که روی Medium نوشتم شروع میکنم تا اونا رو به پروفایل GitHub خودم اضافه کنم و لینک و عنوان آخرین مقالات رو اونجا نشون بدیم واسه همین من تو Root اصلی پروژه و تو مسیر زیر یه فایل به هر اسمی که دوست داریم درست میکنیم برای مثال من اسم این فایل رو `blog-post-workflow.yml` میذارم که مشخص باشه چه کاری قراره انجام بده:
.github/workflows/blog-post-workflow.yml
اما اگه براتون سوالی که محتوای این فایل قراره چی باشه باید بگم میتونید کد زیر رو کامل کپی کنید و توی این فایل قرار بدید:
تنهایی تغییری که باید حتما داخل کد بالا اعمال کنید وارد کردن آدرس پروفایل خودتون به جای پروفایلی هست که من قرار دادم تا Feed های مربوط به پروفایل شما رو بگیره و بهتون نشون بده. اما کد بالا دقیقا چه زمانهایی کار میکنه و ما چجوری میتونیم اونو براساس زمان دلخواه خودمون تنظیم کنیم ؟
خب برای جواب به این سوال لازمه که یه دانش خیلی کوچیک درمورد Cron Job ها داشته باشید و بدونید که چجوری میشه تغییرات دلخواه روشون اعلام کرد اما قبل از اون باید بگم که Action بالا هر 24 ساعت یکبار و راس ساعت 19 عصر اجرا میشه و اگه تغییری تو Feed شما به وجود اومده باشه به صورت خودکار فایل README.md که قبلا درموردش صحبت کردیم رو آپدیت میکنه اگر نیاز دارید که این زمان رو تغییر بدید توصیه میکنم حتما یه سر به وبسایت crontab بزنید و ازش برای تغییر این زمان استفاده کنید. اما خب حالا یه نکتهای که به وجود میاد اینه که خب دقیقا از کجا متوجه میشه که کدوم بخش از فایل رو باید بهروزرسانی کنه ؟ جواب این سوال هم با اضافه کردن یک خط کامنت به فایل README.md داده میشه و دیگه خیلی راحت میتونید ازش استفاده کنید و اون هم این دو خط زیر هستن:
<!-- BLOG-POST-LIST:START --> Your Posts Will Be Add Here !!! <!-- BLOG-POST-LIST:END -->
اگر همه اینکارهارو تا الان انجام دادین باید بهتون تبریک بگم چرا که دیگه از الان بدون نیاز به هیچ کار اضافهای پستهایی که داخل وب سایت Medium نوشتین به صورت خودکار به پروفایل شما اضافه میشه و بقیه هم میتونن ببینن.
اما خب ما که قرار بود پستهای ویرگول رو به پروفایل خودمون اضافه کنیم نه Medium رو خب باید بگم که اگه یه نگاه به Feed ویرگول خودتون بندازید متوجه میشید که شباهت خیلی زیادی بین این دوتا هست و تقریبا هر دو از یک ساختار یکسان طبعیت میکنن واسه همین با یکم تغییر کوچیک میتونید همون فایل Action قبلی رو برای ویرگول هم آماده کنیم و برای اینکه درگیر تنظیمات Action نشید من این فایل رو مثل قبلی آماده کردم و میتونید عینا از همین فایل استفاده کنید:
اما در خصوص تغییرات فایل README.md هم باید بگم که اگه به فایل Action دقت کنید متوجه میشید که برای این مورد هم ما یه کامنت جدید تعریف کردیم تا عنوان و لینک مقالات رو بین این دوتا کامنت قرار بده اما برای توضیح بهتر من این زیر قرارشون میدم:
<!-- VIRGOOL:START --> Your Posts Will Be Add Here !!! <!-- VIRGOOL:END -->
اگر همه این تغییرات رو تا اینجا انجام دادین باید یه تبریک دیگه هم بهتون بگم چون الان پستهای ویرگول رو هم میتونید توی پروفایل خودتون به بقیه نشون بدید و با انتشار هر پس دیگه نیاز به آپدیت پروفایل به صورت دستی رو نخواهید داشت. در خصوص مسیر هم دقیقا باید این فایل رو کنار فایل قبلی که درست کردیم قرار بدیم تا GitHub فایل رو به عنوان یه Action جدید شناسایی کنه.