התסמין
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
הצעד:
- להוסיף
ports: לשירותי mongodb ו-redis בג'וב unit-tests
- לשנות את
MONGODB_URL, REDIS_URL ו-NOTE_FONTS_TEST_MONGO_URI מ-mongodb/redis ל-127.0.0.1
- לתקן את ההערה בקובץ, שאומרת היום את ההפך מהמצב
- לעדכן את האזהרה ב-
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.
התסמין
המארח
mongodbאינו נפתר מהג'ובunit-tests. אותו דבר חל עלredis.השורש
הג'וב הוא
runs-on: ubuntu-latestבליcontainer:, ושני השירותים מוגדרים בליports:— עם הערה שאומרת "Avoid host port binding to prevent conflicts; job connects via service hostname".תיעוד GitHub Actions:
גישה לפי שם השירות עובדת רק כשהג'וב עצמו רץ בקונטיינר. כאן הוא לא. כלומר ההערה בקובץ מתארת תצורה שאינה קיימת, והשירותים מעולם לא היו נגישים מהג'וב הזה.
מה זה עלה בפועל
MONGODB_URLו-REDIS_URLמוגדרים בג'וב אבל מצביעים לשום מקום. כל בדיקה שניסתה להתחבר באמת דילגה או נכשלה — ולכן איש לא שם לב.docs/testing.rstטען ש-tests/test_note_boards_mongo.py"רצות באמת ב-CI". 33 הבדיקות שם מדלגות בשקט מאז ומעולם. המשפט תוקן ב-5cbfcc0, יחד עם דילוג-על-שרת-לא-נגיש בפיקסצ'רwired_mongoשמונע נפילת חבילה.התיקון
יש תקדים נכון באותו קובץ — ג'וב
alembic-migrations(ci.yml:454-455):הצעד:
ports:לשירותיmongodbו-redisבג'ובunit-testsMONGODB_URL,REDIS_URLו-NOTE_FONTS_TEST_MONGO_URIמ-mongodb/redisל-127.0.0.1docs/testing.rst— היא כתובה כך שתיהפך לנכונה אחרי התיקוןNOTE_FONTS_TEST_MONGO_URIכבר מוגדר בג'וב, עם הערה שמסבירה שהוא ממתין לתיקון הזה. ברגע שהכתובת תשתנה הבדיקות יתחילו לרוץ בלי לזכור דבר.התיקון יעיר 33 בדיקות ב-
tests/test_note_boards_mongo.pyשמדלגות היום, ואי אפשר לדעת מראש אילו מהן עוברות — הן לא רצו מעולם ב-CI. ייתכן גם שבדיקות נוספות שגודרו עלMONGODB_URLיתעוררו.זה רצוי — כיסוי אמיתי במקום דיווח שווא — אבל זה סבב משלו, ואין לערבב אותו עם PR של פיצ'ר.
בדיקה שהתיקון עבד
לא מספיק ש-CI ירוק: ירוק הוא גם מה שרואים היום, כשהכול מדלג. הראיה היא שמספר ה-
skippedיורד ומספר ה-passedעולה — ושהבדיקות ב-test_note_boards_mongo.pyמופיעות כ-PASSEDולא כ-SKIPPED.