ריצות בדיקות אוטומטיות על Pull Requests: צינור CI והגנת קוד

כל Pull Request הוא סיכון לשבירת הסביבה היצרנית מבלי לשים לב. אנו מגדירים הרצות בדיקות אוטומטיות ב-CI pipeline כך שהקוד נבדק לפני המיזוג. הצוות שלנו מספק זאת במלואו—מהתצורה ועד התמיכה—ומבטיח הגנה אמינה מפני רגרסיות.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
ריצות בדיקות אוטומטיות על Pull Requests: צינור CI והגנת קוד
פשוט
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

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

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1306
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

ריצות בדיקות אוטומטיות על Pull Requests

תארו לעצמכם: הרגע מיזגתם PR לתוך main, ודקה לאחר מכן הייצור קורס עם שגיאה. מסתבר שהמודול החדש דרס endpoint ישן, ואף בדיקה לא תפסה את זה. תרחיש זה מוכר לצוותים רבים. עברנו את זה ומאז אכפנו כלל נוקשה: כל PR עובר דרך pipeline בדיקות אוטומטי. אין אור ירוק — אין מיזוג. ריצות בדיקות אוטומטיות על PR הן קו ההגנה הבסיסי מפני רגרסיות. מפתח לא יכול למזג קוד ששובר פונקציונליות קיימת. זה לא תחליף לסקירת קוד, אלא תוספת: המבקרים מתמקדים בלוגיקה, לא בתפיסת באגים ברורים.

לפי תיעוד GitHub Actions, שמירת תלויות במטמון מקצרת את זמן ההתקנה מ-90 שניות ל-5 שניות — מהיר פי 18. ביצוע בדיקות מטריציוניות מאפשר לבדוק גרסאות סביבה שונות במקביל, ומאיץ את הריצה הכוללת פי 3–4. זה חוסך עד 40 שעות בחודש על דיבוג. הניסיון שלנו — מעל 5 שנים ב-CI/CD ו-100+ pipelines מוגדרים — מאשר שריצות בדיקות אוטומטיות מחזירות את ההשקעה כבר בתוך הספרנט הראשון.

למה ריצות בדיקות אוטומטיות על PR הן קריטיות

ללא הגנה זו, אתם מסתכנים ב:

  • CI שבור על fail-fast — אם באג מתמזג, כל הספרנט הבא מוקדש לתיקונו.
  • בזבוז זמן על סקירת קוד — המבקרים מוסחים על ידי שגיאות שבדיקות יכלו לתפוס.
  • בדיקות ידניות — ככל שיש פחות שגרה, כך מהירות האספקה גבוהה יותר.

אילו בדיקות להריץ ומאילו לוותר

סוג בדיקה חובה? מתי להריץ מטרה
Linting כן על כל commit סגנון עקבי, תפיסת באגים פוטנציאליים
בדיקות יחידה כן על כל PR בדיקת לוגיקה מבודדת
בדיקות אינטגרציה כן (DB/API) על כל PR אינטראקציה בין רכיבים
E2E לא (לפי דרישה) רק לשינויים בתרחישים קריטיים בדיקת מסלול משתמש מלא
בדיקות אבטחה מומלץ פעם ביום או בשחרור מציאת פרצות

מבנה ה-Pipeline

Pipeline מתוכנן היטב מתפצל למשימות מקבילות עם אסטרטגיית # .github/workflows/pr.yml name: PR Tests on: pull_request: branches: [main, develop] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true # Отменяем старые запуски при новом push jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 20, cache: npm } - run: npm ci - run: npm run lint && npm run type-check unit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 20, cache: npm } - run: npm ci - run: npm test -- --coverage - uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} integration: runs-on: ubuntu-latest services: postgres: image: postgres:16 env: POSTGRES_DB: testdb POSTGRES_PASSWORD: test options: >- --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 20, cache: npm } - run: npm ci - run: npm run test:integration env: DATABASE_URL: postgresql://postgres:test@localhost:5432/testdb :

---
# .github/workflows/pr.yml
name: PR Tests
on:
  pull_request:
    branches: [main, develop]
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true # Отменяем старые запуски при новом push
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - run: npm run lint && npm run type-check
  unit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - run: npm test -- --coverage
      - uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
  integration:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:16
        env:
          POSTGRES_DB: testdb
          POSTGRES_PASSWORD: test
        options: >-
          --health-cmd pg_isready
          --health-interval 5s
          --health-timeout 5s
          --health-retries 5
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - run: npm run test:integration
        env:
          DATABASE_URL: postgresql://postgres:test@localhost:5432/testdb

איך להגדיר מטמון כדי להאיץ את ה-Pipeline

ללא מטמון, npm ci על runner קר לוקח 60–90 שניות. עם מטמון — 5–10 שניות. השתמשו במטמון המובנה ב-actions/setup-node או במפורש דרך actions/cache:

---
# Кэш node_modules по package-lock.json
- uses: actions/setup-node@v4
  with:
    node-version: 20
    cache: npm
# Встроенный кэш в actions/setup-node
# Или явно через actions/cache
- uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
---

השפעת המטמון על המהירות:

שיטה זמן התקנת תלויות זמן pipeline כולל
ללא מטמון 60–90 שניות 3–5 דקות
עם מטמון (actions/setup-node) 5–10 שניות 1–2 דקות
מטמון מובנה + מטריצה 5–10 שניות למשימה 1–2 דקות (במקביל)

בדיקות מטריציוניות ותמיכה במספר ערימות טכנולוגיות

אם היישום חייב לעבוד על מספר גרסאות Node.js או PHP, השתמשו במטריצה:

strategy: matrix: node-version: [18, 20, 22] fail-fast: false # Запускаем все версии даже если одна упала 

לפרויקטים של Laravel, השתמשו בביצוע מקביל של PHPUnit:

---
- name: Run PHPUnit
  run: php artisan test --parallel --coverage-clover=coverage.xml
  env:
    DB_CONNECTION: pgsql
    DB_DATABASE: testing
- name: Upload coverage
  uses: codecov/codecov-action@v4
  with:
    files: coverage.xml
---

# Кэш node_modules по package-lock.json - uses: actions/setup-node@v4 with: node-version: 20 cache: npm # Встроенный кэш в actions/setup-node # Или явно через actions/cache - uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} מריץ בדיקות במקביל דרך strategy: matrix: node-version: [18, 20, 22] fail-fast: false # Запускаем все версии даже если одна упала . על 200+ בדיקות, זה מאיץ פי 3–4.

בדיקות סטטוס והגנת ענפים

בהגדרות GitHub → Branches → Branch protection rules, הוסיפו בדיקות סטטוס נדרשות: - name: Run PHPUnit run: php artisan test --parallel --coverage-clover=coverage.xml env: DB_CONNECTION: pgsql DB_DATABASE: testing - name: Upload coverage uses: codecov/codecov-action@v4 with: files: coverage.xml , --parallel, brianium/paratest. מיזוג לתוך lint ללא בדיקות אלה הוא בלתי אפשרי.

אופטימיזציית מהירות: סינון נתיבים וחלוקת בדיקות

  • סינון נתיבים — הרצת בדיקות רק כשקבצים רלוונטיים משתנים (למשל, דרך unit ב-GitHub Actions).
  • חלוקת בדיקות — פיזור בדיקות על פני מספר runners (מטריצת GitHub Actions).
  • רק מודולים ששונו — Jest integration, pytest paths.

מטרה: ה-pipeline מסתיים תוך 5 דקות. pipelines איטיים גורמים למפתחים להתעלם מהם.

תהליך ההתקנה ומה כלול בעבודה

  1. ניתוח בדיקות קיימות ותשתית הפרויקט.
  2. עיצוב ה-pipeline: הגדרת משימות, מטריצות, מטמון.
  3. יישום תצורת GitHub Actions המותאמת לערימה הטכנולוגית שלכם.
  4. הגדרת הגנת ענפים ובדיקות סטטוס נדרשות.
  5. בדיקה על PR אמיתי, דיבוג.
  6. תיעוד התהליך והעברה לצוות.

כתוצאה מכך, אתם מקבלים:

  • תצורת GitHub Actions עם מטמון ומטריצה
  • בדיקות סטטוס וכללי הגנת ענפים
  • דוחות כיסוי (Codecov, Coveralls)
  • תיעוד להרצת בדיקות מקומית
  • גישה לתבנית ההתחלה המהירה שלנו לפרויקטים חדשים
  • שבועיים של תמיכה לאחר השחרור

ציר זמן ועלות

התקנה בסיסית עם בדיקות יחידה ואינטגרציה עבור Node.js או PHP אורכת 1–2 ימים. הוספת כיסוי ותג — עוד חצי יום. ציר הזמן הסופי תלוי במורכבות הפרויקט (מספר שירותים, סוגי בדיקות). העלות נקבעת באופן אישי.

הזמינו התקנת CI pipeline מהמהנדסים שלנו — אנו מבטיחים pipeline יציב ותיעוד. קבלו ייעוץ על היישום — צרו קשר כדי לדון בפרויקט שלכם.