Alex Tech: post #154 — TG.ME

خب سلام 👋 با توجه به این که اکثرا گفتن که به زبان فارسی برگردیم و یکم توی سبک پست‌های قدیم کانال محتوا بنویسم، گفتم از یه تجربه واقعی این چند وقت براتون بگم. چند وقتی هست کلاً سمت سخت‌افزار نبودم و داشتم روی یه سری نرم‌افزار ویندوز با پایتون کار می‌کردم. همه چی خوب پیش می‌رفت تا رسیدیم به یه مرحله مهم: باید برای macOS هم خروجی می‌گرفتیم 😐 مشکل کجا بود؟ من برنامه رو با پایتون و PyInstaller نوشته بودم و برای ویندوز خیلی راحت خروجی می‌گرفتم: pyinstaller --onefile main.py ولی برای macOS یه نکته مهم وجود داره: • معمولاً باید روی خود macOS بیلد بگیری • یا حداقل یک محیط macOS داشته باشی و اینجا بود که داستان جدی شد… چون من اصلاً مک نداشتم 💀 البته یدونه مک تونستم قرض بگیرم و تست کنم ولی خب راه حل موقت بود. راه‌حل: GitHub Actions یه چیزی که خیلی‌ها فقط برای CI/CD استفاده می‌کنن، ولی یه قابلیت خیلی مهم داره: GitHub می‌تونه ماشین مجازی macOS بهت بده یعنی بدون داشتن مک، می‌تونی روی macOS بیلد بگیری. سناریو ما چی شد؟ می‌خواستیم این اتفاق بیفته: • کد روی GitHub باشه • با هر Push پروژه اجرا بشه • روی macOS بیلد گرفته بشه • خروجی PyInstaller ساخته بشه • فایل نهایی قابل دانلود باشه مرحله 1: ساخت Workflow این فایل رو داخل پروژه بساز: .github/workflows/build-macos.yml مرحله 2: کد GitHub Actions این هم فایل کامل: name: Build macOS App on: push: branches: - main jobs: build: runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: "3.11" - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pyinstaller - name: Build with PyInstaller run: | pyinstaller --windowed --onefile main.py - name: Upload artifact uses: actions/upload-artifact@v4 with: name: macos-build path: dist/ خروجی چی میشه؟ بعد از هر Push: • GitHub یک سیستم macOS مجازی بالا میاره • Python نصب میشه • کتابخانه‌ها نصب میشن • PyInstaller اجرا میشه • فایل خروجی داخل پوشه dist ساخته میشه • از بخش Actions قابل دانلوده ⚠️ نکته مهم این روش برای این موارد عالیه: • ساخت فایل اجرایی macOS • پروژه‌های شخصی • تست و بیلد اتوماتیک ولی برای این موارد کافی نیست: • امضای رسمی اپ (Code Signing) • Notarization اپل • انتشار در App Store اونجا باید Apple Developer Account داشته باشی. در آخر کاری که کردم خیلی ساده بود: به جای اینکه برم مک بخرم 😄 از GitHub خواستم یه مک مجازی برام بالا بیاره و خودش برام خروجی بسازه. و الان هر بار فقط Push می‌کنم و خروجی macOS آماده تحویل دارم.

July 5, 2026 306 1