הקמת CI/CD סקלבילי על Buildkite עם סוכנים מתארחים עצמית

כאשר בניות נתקעות בתורים ותלויות פרטיות אינן נראות לרצי ענן, CI/CD סטנדרטי לא מצליח לעמוד בקצב הצמיחה. אנחנו מקימים pipelines ניתנים להרחבה על Buildkite עם self-hosted agents שרצים על התשתית שלכם. הצוות שלנו מספק את הפרויקט turnkey—מאודיט ועד תמיכה—ובכך מבטיח פעילות יציבה והרחבה גמישה לצרכים עסקיים.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הקמת צינור CI/CD ניתן להרחבה באמצעות Buildkite

Buildkite פועל לפי מודל שרוב פלטפורמות ה-CI מעולם לא יישמו כראוי: אורכסטרציה בענן, ביצוע על התשתית שלך. Buildkite יודע איזו משימה להריץ ובאיזה סדר, אבל הוא אף פעם לא רואה את הקוד — הוא רק ניגש לסוכן שלך שפועל בתוך הרשת שלך, על החומרה שלך, או באשכול שלך.

אנו פורסים צינורות כאלה במתכונת turnkey עם יציבות וביצועים מובטחים. יש לנו 5+ שנות ניסיון ב-DevOps ו-50+ הטמעות CI/CD מוצלחות על פני פלטפורמות שונות. צרו קשר להערכת פרויקט.

למה Buildkite היא הבחירה הטובה ביותר ל-CI/CD עם סוכנים מתארחים עצמית

רצים משותפים מ-GitHub או GitLab הם התחלה נוחה. אבל ברגע שבניות מתחילות לקחת 15–20 דקות והתור מחזיק 10 משימות, זה הופך לברור: אין מקום להתרחבות על מכונות של מישהו אחר עם CPU וזיכרון משותפים. Buildkite מתמודד עם זה באופן קיצוני — הסוכנים שלך הם שלך, כך שאם אתה רוצה 50 בניות מקבילות, הפעל 50 סוכנים. רוצה ARM לבניות ניידות ו-x86 לקצה אחורי — תייג סוכנים בהתאם ונתב משימות לחומרה מתאימה באמצעות agents: { queue: "arm64" }.

מקרה שימוש שני הוא תלויות ורגיסטרים פרטיים. כאשר בנייה ניגשת לרגיסטר npm פנימי, Docker Hub פרטי, או מראת PyPI בתוך VPN, רצים משותפים פשוט לא יכולים להגיע אליו. סוכן Buildkite בתוך הרשת פותר זאת ללא מנהרות VPN או רשימות IP מורשות. חיסכון בעלויות תשתית מגיע ל-30–50% בהשוואה לפתרונות CI בתשלום על ידי שימוש בסוכנים משלך.

השוואה: רצים משותפים לעומת סוכני Buildkite

תכונה רצים משותפים (GitHub Actions) סוכני Buildkite
מקביליות מוגבלת על ידי מכסה (לדוגמה, 20 משימות מקבילות לחשבון) בלתי מוגבלת, אתה שולט בה. הפעל עד 200 בניות מקבילות ללא תור
גישה למשאבים פרטיים דורש VPN/מנהרות גישה מלאה בתוך הרשת
בידוד CPU/RAM משותפים מכונות ייעודיות או pods
מטמון TTL מוגבל, המטמון חי עד 7 ימים ניתן להגדרה, S3/PVC
תמחור תשלום לפי דקה רק משאבי סוכנים, עד 40% חיסכון

איך צינור Buildkite עובד

הגדרת הצינור היא קובץ YAML .buildkite/pipeline.yml במאגר. המבנה הבסיסי נראה פשוט, אבל הפלטפורמה תומכת בצינורות דינמיים: שלב אחד מריץ סקריפט שמייצר YAML לשלבים הבאים ומעלה אותו באמצעות buildkite-agent pipeline upload. זה מאפשר בניות מטריצה שבהן רשימת הרכיבים לבנייה נקבעת תוך כדי תנועה על סמך קבצים ששונו, לא מקודדת מראש.

---
# .buildkite/pipeline.yml
steps:
  - label: ":docker: Build"
    command: "scripts/build.sh"
    agents:
      queue: "docker-builders"
    plugins:
      - docker#v5.10.0:
          image: "node:20-alpine"
          volumes:
            - "/tmp/cache:/root/.npm"
  - wait
  - label: ":test_tube: Test"
    command: "scripts/test.sh"
    parallelism: 4
    agents:
      queue: "test-runners"
  - block: ":rocket: Deploy to Production"
    branches: "main"
  - label: "Deploy"
    command: "scripts/deploy.sh"
    branches: "main"
    agents:
      queue: "deploy-production"

# .buildkite/pipeline.yml steps: - label: ":docker: Build" command: "scripts/build.sh" agents: queue: "docker-builders" plugins: - docker#v5.10.0: image: "node:20-alpine" volumes: - "/tmp/cache:/root/.npm" - wait - label: ":test_tube: Test" command: "scripts/test.sh" parallelism: 4 agents: queue: "test-runners" - block: ":rocket: Deploy to Production" branches: "main" - label: "Deploy" command: "scripts/deploy.sh" branches: "main" agents: queue: "deploy-production" — Buildkite מפצל אוטומטית את משימת הבדיקות ל-4 shards מקבילים. כל shard מקבל משתנים parallelism: 4 ו-BUILDKITE_PARALLEL_JOB, המאפשרים לסקריפט הבדיקות לקבוע איזה חלק מהבדיקות להריץ. Jest, RSpec, pytest — כולם תומכים בפיצול כזה.

תוספים הם מערכת אקולוגית נפרדת. BUILDKITE_PARALLEL_JOB_COUNT, docker, ecr, kubernetes, cache — כל תוסף עוטף לוגיקה טיפוסית להגדרה לשימוש חוזר. אין צורך לכתוב סקריפט bash לדחיפה ל-ECR; פשוט חבר את התוסף artifacts וציין פרמטרים.

איך לפרוס סוכני Buildkite

סוכן Buildkite הוא בינארי Go שמתקין תוך דקה. להגדרת ייצור, אנו ממליצים להריץ דרך systemd על מכונות וירטואליות ייעודיות או כ-DaemonSet ב-Kubernetes.

עבור Kubernetes, מחסנית הסוכנים של Buildkite ל-Kubernetes (האופרטור הרשמי) מאפשרת לכל משימה לרוץ ב-pod נפרד. הסוכן לא מחזיק מצב בין משימות, ומספק בידוד מלא. ecr#v2.7.0 נפרס באמצעות Helm:

helm repo add buildkite https://buildkite.github.io/helm-charts
helm install buildkite-agent buildkite/agent \
  --set agentToken="$BUILDKITE_AGENT_TOKEN" \
  --set config.tags="queue=k8s-builders,arch=amd64"

לשמירת מטמון תלויות בין משימות, השתמש ב-PVC נפרד או ב-S3 bucket המורכב דרך התוסף buildkite-agent-stack-k8s. בניגוד ל-GitHub Actions, שבו המטמון מאוחסן על שרתי GitHub עם TTL מוגבל, כאן המטמון חי כל עוד אתה צריך.

מה כלול

  • ביקורת על צינורות ותשתית קיימים
  • פריסת סוכנים (VM או K8s)
  • הגדרת צינורות, מטמון, ארטיפקטים
  • מקביליות בדיקות עם sharding
  • אינטגרציה עם Slack, GitHub, PagerDuty
  • תיעוד תפעולי ו-runbook
  • חודש אחד של תמיכה לאחר השקה

שלבי תהליך

  1. ביקורת צינורות קיימים — מה קיים, היכן צווארי בקבוק בזמן, אילו משימות דורשות גישה למשאבים פנימיים.
  2. בחירת תשתית סוכנים — VM לעומת Kubernetes, on-premise לעומת ענן, דרישות בידוד.
  3. פריסת סוכנים — התקנה, systemd/DaemonSet, הגדרת תגי תור.
  4. העברת צינורות — המרת helm repo add buildkite https://buildkite.github.io/helm-charts helm install buildkite-agent buildkite/agent \ --set agentToken="$BUILDKITE_AGENT_TOKEN" \ --set config.tags="queue=k8s-builders,arch=amd64" או workflows של GitHub Actions ל-cache.
  5. הגדרת מטמון וארטיפקטים — S3/GCS bucket לתוסף המטמון, מדיניות שמירה.
  6. מקביליות בדיקות — הגדרת sharding, אינטגרציה עם Test Analytics לניתוח בדיקות איטיות.
  7. התראות ואינטגרציות — Slack, PagerDuty, סטטוסי commit של GitHub.

הערכות זמנים

תרחיש משך
צינור יחיד, סוכנים על VM 1–2 ימים
העברת צינורות קיימים (עד 5 מאגרים) 2–3 ימים
סוכנים ב-Kubernetes + צינורות דינמיים 3–5 ימים

העלות מחושבת באופן אישי לאחר ביקורת תשתית. בקשו ייעוץ להערכת הפרויקט שלכם.

Buildkite נותן לך שליטה מלאה על תשתית ה-CI/CD ללא פגיעה במהירות או באבטחה. סוכנים מתארחים עצמית פותרים בעיות של התרחבות, גישה למשאבים פרטיים, ומטמון שמתחרים בענן לא יכולים לטפל בהן. צינורות דינמיים ותוספים מאיצים פיתוח ותחזוקה.

צרו קשר כדי לקבל תוכנית העברה ראשונית.