צינור CI/CD לפרויקטים של Bitrix עם אוטומציה של PHPUnit ו-PHPStan

בדיקות ידניות של פרויקטי Bitrix לרוב מפספסות שגיאות שפוגעות בתפקוד בסביבת הייצור. אנו מיישמים צינור CI/CD אוטומטי שמריץ בדיקות וניתוח סטטי עם כל שינוי בקוד. הצוות שלנו מקים את התהליך במלואו, ומבטיח הגנה אמינה מפני רגרסיות וכשלים.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
צינור CI/CD לפרויקטים של Bitrix עם אוטומציה של PHPUnit ו-PHPStan
פשוט
~1 יום

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

שאלות נפוצות

הבעיה בבדיקות ידניות בפרויקטי Bitrix

תארו לעצמכם: אתם מעלים עדכון לסביבת הייצור, ושעה לאחר מכן אתם מגלים שהמחירים לא מוצגים בקטלוג. Commit שבר את השאילתה ל-infoblocks, אבל היה עבורו טסט—הוא פשוט לא הופעל. המהנדסים שלנו נתקלים בזה באופן קבוע. הפתרון הוא בדיקות אוטומטיות ב-CI/CD. אנו משלבים pipeline שאינו מאפשר לקוד להיכנס ל-main מבלי לעבור את כל השלבים. עבור Bitrix, נדרש להתחשב במאפייני ה-kernel ובמאפייני מסד הנתונים, אבל מצאנו גישות עבודה. בשילוב CI/CD, פרויקטי Bitrix זוכים לבדיקות PHPUnit אוטומטיות ולניתוח PHPStan, שתופסים שגיאות מוקדם.

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

למה בדיקות אוטומטיות ב-CI/CD הן קריטיות עבור Bitrix

pipeline של CI/CD מריץ בדיקות אוטומטית על כל push. המפתח לא יכול לשכוח להריץ את הבדיקה—הקוד חסום עד שה-pipeline עובר בהצלחה. זה חוסך עד 80% מהזמן בבדיקות רגרסיה ומבטל שגיאות אנוש. pipeline אוטומטי רץ פי 20 מהר יותר מבדיקת קוד ידנית לפני deployment. השוואה: PHPStan רמה 5 מוצא פי 3 יותר שגיאות מאשר lint פשוט. עבור Bitrix, שבו שגיאות אופייניות הן קריאות לא נכונות ל-API או שאילתות infoblock שגויות, ניתוח סטטי הוא בעל ערך מיוחד. הגישה מתוארת ב-Continuous Integration.

ארכיטקטורת ה-Pipeline

pipeline CI מינימלי לפרויקט Bitrix:

  1. Checkout — שליפת קוד מהמאגר.
  2. Composer install — התקנת תלויות (PHPUnit, phpstan, php-cs-fixer).
  3. Lint — php -l עבור כל קבצי ה-PHP.
  4. ניתוח סטטי — PHPStan / Psalm.
  5. בדיקות יחידה — בדיקות מהירות ללא ה-kernel.
  6. בדיקות אינטגרציה — בדיקות עם kernel ומסד נתונים.
  7. Deploy (רק עבור main).

תמונת Docker עבור CI

האתגר המרכזי הוא שה-kernel של Bitrix אינו ניתן להתקנה דרך Composer. שתי אפשרויות:

תכונה אפשרות A: kernel ב-Docker אפשרות B: kernel דרך artifact
אמינות גבוהה — התמונה תמיד מעודכנת בינונית — תלוי באחסון
מהירות הפעלה מהירה איטית יותר עקב הורדה
עדכון דורש בנייה מחדש של התמונה ניהול גרסאות גמיש

אפשרות A: kernel בתמונת Docker.

FROM php:8.1-cli
RUN apt-get update && apt-get install -y libpq-dev libzip-dev \
    && docker-php-ext-install pdo pdo_mysql opcache zip
COPY bitrix/ /var/www/bitrix/
COPY composer.json composer.lock /var/www/
WORKDIR /var/www
RUN composer install --no-dev

אפשרות B: kernel דרך artifact. CI מוריד את ה-kernel ממאגר פרטי (S3, GitLab Package Registry). גמיש יותר אבל איטי יותר.

הגדרת GitLab CI

---
stages:
  - lint
  - test
  - deploy
variables:
  MYSQL_DATABASE: bitrix_test
  MYSQL_ROOT_PASSWORD: test
lint:
  stage: lint
  image: php:8.1-cli
  script:
    - find local/ -name "*.php" -exec php -l {} \;
    - vendor/bin/phpstan analyse local/php_interface/classes/ --level 5
integration-tests:
  stage: test
  image: registry.example.com/bitrix-ci:latest
  services:
    - mysql:8.0
  script:
    - cp .env.ci .env
    - php local/tests/setup_db.php
    - vendor/bin/phpunit --configuration local/tests/phpunit.xml
  artifacts:
    when: always
    reports:
      junit: local/tests/report.xml
---

נקודות מפתח:

  • FROM php:8.1-cli RUN apt-get update && apt-get install -y libpq-dev libzip-dev \ && docker-php-ext-install pdo pdo_mysql opcache zip COPY bitrix/ /var/www/bitrix/ COPY composer.json composer.lock /var/www/ WORKDIR /var/www RUN composer install --no-dev — מפעיל קונטיינר MySQL הנגיש ב-host stages: - lint - test - deploy variables: MYSQL_DATABASE: bitrix_test MYSQL_ROOT_PASSWORD: test lint: stage: lint image: php:8.1-cli script: - find local/ -name "*.php" -exec php -l {} \; - vendor/bin/phpstan analyse local/php_interface/classes/ --level 5 integration-tests: stage: test image: registry.example.com/bitrix-ci:latest services: - mysql:8.0 script: - cp .env.ci .env - php local/tests/setup_db.php - vendor/bin/phpunit --configuration local/tests/phpunit.xml artifacts: when: always reports: junit: local/tests/report.xml .
  • services: mysql — יוצר סכמת מסד נתונים מינימלית.
  • mysql — תוצאות בדיקות בממשק ה-merge request.

עבור GitHub Actions

---
name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_DATABASE: bitrix_test
          MYSQL_ROOT_PASSWORD: test
        ports:
          - 3306:3306
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'
          extensions: pdo_mysql, mbstring, zip, gd
      - run: composer install
      - run: vendor/bin/phpunit --configuration local/tests/phpunit.xml

מסד הנתונים המלא של Bitrix מכיל 500+ טבלאות. עבור בדיקות אינטגרציה, נדרשת קבוצה מינימלית: setup_db.php, artifacts: junit, name: Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_DATABASE: bitrix_test MYSQL_ROOT_PASSWORD: test ports: - 3306:3306 steps: - uses: actions/checkout@v4 - uses: shivammathur/setup-php@v2 with: php-version: '8.1' extensions: pdo_mysql, mbstring, zip, gd - run: composer install - run: vendor/bin/phpunit --configuration local/tests/phpunit.xml (תצורת מודול); b_option, b_module, b_module_to_module, b_iblock, b_iblock_type, b_iblock_element (infoblocks); b_iblock_section, b_iblock_property (קטלוג); b_iblock_element_property, b_catalog_price, b_catalog_currency (הזמנות). צרו dump של הסכמה מהייצור: b_sale_order. שמרו אותו במאגר ועדכנו אותו כאשר חלים שינויים. dump כזה הוא בגודל קילובייטים וקל לניהול גרסאות.

בדיקות אינטגרציה עם מסד נתונים אמיתי תופסות פי 5 יותר באגים מאשר בדיקות יחידה ללא ה-kernel.

הכנת סביבת הבדיקות

קריטי להשתמש במסד נתונים נפרד לבדיקות שאינו משפיע על מסדי הנתונים של הפיתוח או הייצור. ב-CI, קונטיינרים של MySQL נוצרים אוטומטית ונהרסים לאחר הריצה. במחשב הפיתוח המקומי, ניתן להפעיל מסד נתונים כזה דרך Docker Compose—זה מבטיח סביבה זהה.

זמני ביצוע לפי שלב

שלב זמן
Lint + ניתוח סטטי 30-60 שניות
בדיקות יחידה (ללא kernel) 10-30 שניות
בדיקות אינטגרציה (עם kernel ומסד נתונים) 2-10 דקות
Pipeline מלא 5-15 דקות

אם בדיקות האינטגרציה אורכות יותר מ-15 דקות, חלקו אותן למשימות מקבילות לפי מודול. GitLab CI ו-GitHub Actions תומכים באסטרטגיות matrix.

תוצאות האוטומציה

לאחר הטמעת CI/CD עם בדיקות אוטומטיות, זמן הרגרסיה יורד ב-80%, ומספר הבאגים בייצור יורד ב-90%. מפתחים חוסכים עד 10 שעות בשבוע שהוקדשו בעבר לבדיקות ידניות. אינטגרציה רציפה לפרויקט Bitrix מאפשרת אימות קוד אוטומטי על כל commit ומשחררת עדכונים פי 2 יותר פעמים. עבור חברות עם 5+ מפתחים, זה מתורגם לחיסכון של $5,000 בחודש.

מה כלול (Deliverables)

בהזמנת הגדרת CI/CD עבור Bitrix, אנו מספקים:

  • תשתית מוכנה (תמונת Docker עם kernel, הגדרת ספק CI).
  • מערכת בדיקות בסיסית (lint, ניתוח סטטי, יחידה, אינטגרציה).
  • גישה ל-CI runner ולהגדרות המאגר.
  • תיעוד להרצת בדיקות מקומית וב-CI.
  • הדרכת צוות (סדנה של 1-2 שעות).
  • תמיכה לחודשיים הראשונים (ייעוץ, תיקוני pipeline).

עם ניסיון של למעלה מ-5 שנים ו-100+ פרויקטי Bitrix, הצוות שלנו מבטיח הטמעת CI/CD אמינה. העלות מחושבת באופן אישי לפי מורכבות הפרויקט, החל מ-$2,000. אנו מעריכים את הפרויקט ביום אחד—צרו קשר כדי לדון בפרטים. קבלו ייעוץ להצעה מותאמת אישית.

היתרונות של הגדרת CI/CD שלנו עבור Bitrix ה-pipeline שלנו מפחית עבודה ידנית ב-80% ותופס באגים לפני ה-deployment. מהימן על ידי 50+ חברות, אנו מספקים פתרון מוכן לייצור תוך 1-3 ימים.