להגדיר מהו שחרור שאפשר לשחזר
תהליך CI/CD מחבר שינוי בקוד לאימות ולפריסה. במוצר קטן, המטרה הראשונה היא לדעת איזה קוד פועל, מה נבדק ואיך מפעילים שוב את אותה גרסה. רצף ארוך של כלים יכול להסתיר את הקשר הזה אם אין בעלות ברורה על כל שלב.
כתבו מסלול קצר: שינוי נכנס, בדיקות רצות, תוצר נבנה, התוצר נבדק וגרסה מזוהה משתחררת. ליד כל שלב ציינו מה גורם לעצירה ומה נשמר כראיה. תהליך שממשיך אחרי כשל חשוב אינו נותן ביטחון רק משום שבסוף יש image.
לבחור בדיקות שמגינות על התנהגות
בדיקות צריכות להתאים לסיכון. אימות קלט, הרשאות, פעולה כפולה ותקשורת עם שירות חיצוני יכולים להיות משמעותיים יותר מעשרות בדיקות של טקסט קבוע במסך. הוסיפו בדיקת בנייה ובדיקת הפעלה של התוצר בסביבת ריצה דומה לזו שאליה תפרסו.
סריקת תלות וסודות נותנת מידע נוסף, אך אינה מחליפה בדיקות התנהגות. קבעו מדיניות לטיפול בממצא: מה חוסם שחרור, מי יכול לאשר חריגה ואיך היא מתועדת. החרגה זמנית צריכה להיות קשורה לממצא ולמועד בדיקה מחדש.
לבנות פעם אחת ולזהות את התוצר
כאשר בונים תוצר מחדש בין בדיקה לפרסום, עלולים לאבד את הקשר למה שנבדק. תכננו העברה של אותו artifact שנבדק לשלב הפרסום. תעדו commit, תג גרסה ו־digest של image כאשר משתמשים בקונטיינרים.
תג גרסה מועיל לאנשים, ו־digest מזהה את תוכן ה־image. החליטו אילו תגים נשארים קבועים ואילו משמשים ערוץ עדכון. בלי מדיניות כזאת, שם מוכר כמו latest יכול לתאר תוכן שונה בביקורים שונים, ולהקשות על אבחון וחזרה לגרסה קודמת.
לצמצם את הסמכות של תהליך הבנייה
לשלב בדיקה אין בהכרח צורך בהרשאת פרסום. הגבילו הרשאות לפי job, הפרידו טיפול בקוד בלתי מהימן מסודות פריסה ובחנו כל action חיצוני. GitHub ממליצה על קיבוע actions ל־SHA מלא כדי להשתמש בהפניה בלתי משתנה.
קיבוע אינו סוף התחזוקה. צריך לבדוק עדכונים ולנהל את ההחלפה באופן מסודר. כתבו גם מה קורה בבנייה של Pull Request ומה קורה בשחרור עם תג. ערבוב שני המסלולים יכול להעניק לקוד שלא אושר סמכות שלא נועדה לו.
לבדוק פריסה וחזרה כחלק מהמסירה
אחרי פריסה בדקו מסלול שימוש קטן ובריאות מערכת, ולא רק שהקונטיינר התחיל. קבעו תנאי עצירה ובעלים להתראות. שינויים בבסיס נתונים דורשים תוכנית נפרדת: חזרה לקוד ישן אינה מבטיחה שהנתונים או הסכמה מתאימים לו.
- גרסה מקושרת ל־commit ולתוצר שנבדק.
- בדיקות מחייבות עוצרות פרסום במקרה כשל.
- סודות והרשאות ניתנים רק לשלב שזקוק להם.
- קיימת בדיקת הפעלה ותוכנית חזרה שנוסתה בתרחיש מתאים.