אוטומציה של בניות משחק עם צינורות CI/CD
בניות ידניות של Unity על המחשב המקומי של המפתח אינן צינור — הן סיכון. בניות תלויות בהגדרות הסביבה המקומית, גרסת העורך, ומטמונים מיובאים. "זה עובד על המחשב שלי" הופך ל"אבל ל-QA אין את זה כי יש להם גרסת סקריפט שונה או מטמון Shader Compiler שונה." הגדרת אינטגרציה רציפה ופריסה (CI/CD) לבניות משחק מבטלת ארטיפקטים שאינם ניתנים לשחזור. אנחנו פותרים זאת באמצעות אוטומציה. לצוות שלנו יש ניסיון של 7+ שנים בפיתוח משחקים, והקמנו אוטומציה ל-30+ פרויקטים. חיסכון חודשי ממוצע: $2,500 על פני פלטפורמות, ועד $3,000 לחודש עבור שלוש פלטפורמות או יותר. זה מחזיר את עצמו תוך 2–3 חודשים. קבלו הערכת פרויקט — צרו קשר.
CI/CD בפיתוח משחקים מבטל את הבעיה: כל commit לענף develop מייצר אוטומטית ארטיפקט שניתן לשחזור — בנייה לפלטפורמה ספציפית. QA תמיד בודק את הבנייה הטרייה ללא תלות במתכנת. צינור מוגדר מהיר פי 3 מבניות ידניות ומפחית באגים לפני שחרור ב-80%. צרו קשר לייעוץ.
GameCI כבסיס ל- Unity CI/CD
GameCI (game.ci) הוא תמונת Docker בקוד פתוח עם Unity מותקן מראש, המיועדת במיוחד לאוטומציה. היא עובדת עם GitHub Actions, GitLab CI, CircleCI, Jenkins. תומכת בכל גרסאות Unity LTS, ובכל פלטפורמות היעד (Android, iOS, WebGL, Windows, macOS, Linux).
זרימת עבודה בסיסית של GitHub Actions לקומפילציית Android:
---
- name: Build Android
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
targetPlatform: Android
unityVersion: 2022.3.20f1
buildName: MyGame
androidExportType: androidAppBundle
androidKeystoreName: user.keystore
androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }}
androidKeyaliasName: ${{ secrets.ANDROID_KEY_ALIAS_NAME }}
androidKeyaliasPass: ${{ secrets.ANDROID_KEY_ALIAS_PASS }}
---
נקודה קריטית — רישיון Unity במכונת ה-CI. Unity Personal/Plus דורש הפעלת מושב. עבור CI אנו משתמשים ב-Unity License Server (Enterprise) או בהפעלה ידנית דרך זרימת ההפעלה של game-ci. ללא הפעלה נכונה, ה-CI פשוט לא ירוץ. לפי תיעוד Unity, רישוי עבור CI הוא חובה.
כיצד להגדיר CI/CD למשחקים: 4 שלבים מרכזיים
השלבים מסודרים לוגית: אימות, בנייה, הפצה, שחרור לייצור. לכל אחד יש דקויות משלו. שלב אחר שלב:
-
אימות — בדיקות מהירות ללא בנייה מלאה: בדיקות יחידה באמצעות
- name: Build Android uses: game-ci/unity-builder@v4 env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} with: targetPlatform: Android unityVersion: 2022.3.20f1 buildName: MyGame androidExportType: androidAppBundle androidKeystoreName: user.keystore androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }} androidKeyaliasName: ${{ secrets.ANDROID_KEY_ALIAS_NAME }} androidKeyaliasPass: ${{ secrets.ANDROID_KEY_ALIAS_PASS }}, בדיקת פורמט קוד, תקינות גרף תלויות נכסים. רץ על כל push, אורך 5–10 דקות. -
בנייה — קומפילציה מלאה לפלטפורמות היעד באמצעות קומפילציה מצטברת ומטמון בינארי. רץ על merge ל-
game-ci/unity-test-runnerאו בלוח זמנים. Android: 15–40 דקות. iOS: 30–60 דקות. WebGL: 10–25 דקות. -
הפצה — לאחר בנייה מוצלחת: Android AAB → Google Play Internal Testing דרך
develop, iOS IPA → TestFlight דרךfastlane supply, WebGL → אירוח S3/CDN. QA מקבל הודעת Slack עם קישור ישיר לבניית הבדיקה. - שחרור לייצור — טריגר ידני (אישור ידני). בנייה סופית עם קונפיגורציית ייצור, חתומה עם keystore/תעודה לייצור, ופורסמה לחנות.
מדוע Self-Hosted Runner מהיר יותר מענן?
לאולפנים עם 3+ מפתחים, מכונת בנייה ייעודית משתלמת יותר. קומפילציית Unity היא אינטנסיבית במעבד ובקלט/פלט. זמן ב-GitHub Actions (4 CPU, 16 GB RAM) — 40 דקות לבניית Android. על שרת ייעודי (16 CPU, 64 GB RAM) — אותה בנייה ב-12 דקות.
השוואה בין CI בענן לבין CI עצמי
| פרמטר | CI בענן (GitHub Actions) | Self-hosted runner |
|---|---|---|
| זמן בניית Android | 40 דקות | 12 דקות |
| עלות לדקה | חינם (עד למגבלה) | עלויות חומרה |
| מטמון | דורש הגדרה מפורשת | נשמר על הדיסק |
| קנה מידה | מיידי | מוגבל על ידי חומרה |
מטמון ה-shader של Unity ומטמון ייבוא הנכסים בין בניות הם קריטיים למהירות. על self-hosted runner המטמון נשמר בין ריצות. ב-CI בענן יש צורך לשמור מטמון במפורש באמצעות fastlane pilot (תיקיית Library/), אחרת כל בנייה מייבאת את כל הנכסים מההתחלה.
כיצד להאיץ בניות ב-CI בענן?
השתמשו במטמון Library דרך actions/cache עם מפתח המבוסס על hash של תלויות. זה מקצר את זמן ייבוא הנכסים מ-20 ל-2 דקות. ניתן גם ליישם בניות מצטברות דרך Unity Accelerator, ולנצל אפשרויות אופטימיזציה של IL2CPP להקטנת זמן הקומפילציה.
מקרה אמיתי: אולפן עם 4 מתכנתים ו-2 אמנים, פרויקט Android. בניות ידניות ארכו 50+ דקות, ונעשו פעם בשבוע. לאחר הגדרת GameCI + GitHub Actions על self-hosted runner עם Ubuntu ו-Wine עבור Unity: בנייה אוטומטית על כל merge ל-develop, זמן בנייה 18 דקות בזכות פיצול asset bundles ו-shader stripping, QA מקבל קישור ל-Firebase App Distribution אוטומטית. מספר הבאגים לפני שחרור שנמצאו שולש — פשוט כי QA התחיל לבדוק באופן קבוע. החזר ההשקעה באוטומציה היה חודשיים.
מה כלול בהקמה מסודרת
- הקמת CI/CD לפלטפורמה אחת או יותר (Android, iOS, WebGL)
- בחירת סוג runner (ענן או עצמי)
- הגדרת מטמון ואופטימיזציה של זמן בנייה
- חתימה אוטומטית ל-iOS (Fastlane match)
- אינטגרציה עם חנויות אפליקציות (Google Play, App Store)
- הודעות על תוצאות בנייה ב-Slack/Telegram
- תיעוד תפעול הצינור
- הדרכת צוות (שעה)
- עלות הקמה ממוצעת $2,500 עבור צינור לפלטפורמה אחת.
| היקף המשימה | לוח זמנים משוער |
|---|---|
| CI/CD לפלטפורמה אחת (Android או iOS) | 3–5 ימים |
| CI/CD לשתי פלטפורמות + הפצה | 1–2 שבועות |
| צינור מלא (Android + iOS + WebGL + Slack) | 2–3 שבועות |
| הקמת self-hosted runner + מטמון | 2–4 ימים |
העלות מחושבת לאחר ניתוח התשתית ופלטפורמות היעד. צרו קשר לייעוץ. אנו מבטיחים יציבות ותמיכה. קבלו הערכת פרויקט כדי לקבל לוח זמנים ותקציב מדויקים.





