Skip to content

CI: שירותי mongo ו-redis אינם נגישים מג'וב Unit Tests #3292

Description

@amirbiron

התסמין

mongodb:27017: [Errno -3] Temporary failure in name resolution

המארח mongodb אינו נפתר מהג'וב unit-tests. אותו דבר חל על redis.

השורש

הג'וב הוא runs-on: ubuntu-latest בלי container:, ושני השירותים מוגדרים בלי ports: — עם הערה שאומרת "Avoid host port binding to prevent conflicts; job connects via service hostname".

תיעוד GitHub Actions:

"The service running in the Docker container does not expose its ports to the job on the runner by default. You need to map ports on the service container to the Docker host."

"You can access service containers using localhost:<port> or 127.0.0.1:<port>."

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

מה זה עלה בפועל

MONGODB_URL ו-REDIS_URL מוגדרים בג'וב אבל מצביעים לשום מקום. כל בדיקה שניסתה להתחבר באמת דילגה או נכשלה — ולכן איש לא שם לב.

docs/testing.rst טען ש-tests/test_note_boards_mongo.py "רצות באמת ב-CI". 33 הבדיקות שם מדלגות בשקט מאז ומעולם. המשפט תוקן ב-5cbfcc0, יחד עם דילוג-על-שרת-לא-נגיש בפיקסצ'ר wired_mongo שמונע נפילת חבילה.

התיקון

יש תקדים נכון באותו קובץ — ג'וב alembic-migrations (ci.yml:454-455):

    services:
      postgres:
        image: postgres:16
        ports:
          - 5432:5432

הצעד:

  1. להוסיף ports: לשירותי mongodb ו-redis בג'וב unit-tests
  2. לשנות את MONGODB_URL, REDIS_URL ו-NOTE_FONTS_TEST_MONGO_URI מ-mongodb/redis ל-127.0.0.1
  3. לתקן את ההערה בקובץ, שאומרת היום את ההפך מהמצב
  4. לעדכן את האזהרה ב-docs/testing.rst — היא כתובה כך שתיהפך לנכונה אחרי התיקון

NOTE_FONTS_TEST_MONGO_URI כבר מוגדר בג'וב, עם הערה שמסבירה שהוא ממתין לתיקון הזה. ברגע שהכתובת תשתנה הבדיקות יתחילו לרוץ בלי לזכור דבר.

⚠️ למה זה PR נפרד

התיקון יעיר 33 בדיקות ב-tests/test_note_boards_mongo.py שמדלגות היום, ואי אפשר לדעת מראש אילו מהן עוברות — הן לא רצו מעולם ב-CI. ייתכן גם שבדיקות נוספות שגודרו על MONGODB_URL יתעוררו.

זה רצוי — כיסוי אמיתי במקום דיווח שווא — אבל זה סבב משלו, ואין לערבב אותו עם PR של פיצ'ר.

בדיקה שהתיקון עבד

לא מספיק ש-CI ירוק: ירוק הוא גם מה שרואים היום, כשהכול מדלג. הראיה היא שמספר ה-skipped יורד ומספר ה-passed עולה — ושהבדיקות ב-test_note_boards_mongo.py מופיעות כ-PASSED ולא כ-SKIPPED.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions