باتلر: نظارت کامل بر GitHub Actions سازمانت
خلاصهٔ کاملتر
اگه توی یه تیم یا سازمان بزرگ با GitHub کار میکنی، احتمالاً این سوال برات پیش اومده که «دقیقاً چه ورکفلوهایی روی ریپوهای مختلف ما داره اجرا میشه؟» باتلر (Butler) یه ابزار پایتونیه که دقیقاً همین مشکل رو حل میکنه.
باتلر تمام ریپوهای یه سازمان GitHub رو اسکن میکنه و اطلاعات جامعی از ورکفلوها، اکشنهای استفادهشده، سکرتها و متغیرها، و وابستگیهای third-party جمعآوری میکنه. این اطلاعات میتونن برای بررسیهای امنیتی، آدیت وابستگیها، و مدیریت کلی ورکفلوها استفاده بشن.
فرآیند کار باتلر سه مرحله داره: اول دانلود اطلاعات ریپوها توی یه دیتابیس SQLite محلی، بعد پردازش اون دیتابیس، و در آخر تولید گزارش. جالبه که میشه چند سازمان یا ریپوی مختلف رو توی یه فایل دیتابیس داشت.
برای احراز هویت، باتلر از GitHub PAT (Personal Access Token) استفاده میکنه. یه ویژگی جالبش اینه که از چند توکن همزمان پشتیبانی میکنه تا بتونی سرعت دانلود رو بالاتر ببری و محدودیتهای rate limit رو دور بزنی:
export GITHUB_TOKEN_1=ghp_aaa...
export GITHUB_TOKEN_2=ghp_bbb...
python butler.py download [...] --token "GITHUB_TOKEN_*"برای دانلود چند سازمان یا ریپوی مشخص هم میشه همزمان چند آرگومان --repo پاس داد:
python butler.py download [...] --repo "github" --repo "microsoft/vscode" --repo "openai"پس از دانلود، مرحله پردازش و بعد تولید گزارش انجام میشه. خروجی نهایی به صورت فایلهای HTML و CSV آماده میشه که میشه باهاشون ریپورتهای خوانا و قابلبررسی داشت. سازندههای پروژه نمونه گزارشهایی برای سازمانهای بزرگی مثل GitHub، OpenAI، Docker و AWS Labs هم آماده کردن.
این ابزار هنوز در حال توسعه فعاله و سازندهاش از گزارش باگ و پیشنهاد فیچر استقبال میکنه.
نکات کلیدی:
- باتلر ورکفلوها، اکشنها، سکرتها و وابستگیهای third-party رو در سطح کل سازمان GitHub اسکن میکنه
- خروجی به صورت HTML و CSV برای آدیت امنیتی و مدیریت ورکفلو آماده میشه
- اطلاعات توی SQLite ذخیره میشن و میشه چند سازمان رو در یه دیتابیس داشت
- پشتیبانی از چند GitHub Token برای دور زدن rate limit و افزایش سرعت
- پروژه متنباز و در حال توسعه فعاله




