חיבור קוד (/projects/connect/code) מקשר פרויקט של aiKit למאגר Git שכבר יש לכם, כמו אפליקציית Laravel ב-GitHub, ולמקום שבו היא פועלת: השרת שלכם, או האירוח של aiKit. מאותו רגע תבקשו שינויים במילים פשוטות בלשונית האירוח של הפרויקט. ה-AI של aiKit עורך עותק של הקוד, מריץ את הבדיקות של הפרויקט, מציג לכם את ההבדלים ותצוגה מקדימה, ומפרסם רק אחרי שמישהו מהצוות מאשר. כל פרסום הוא גרסה ממוספרת שאפשר לחזור אליה בלחיצה אחת. המאגר שלכם נשאר מקור האמת, והשרת ממשיך לפרוס בדיוק כמו תמיד.
חיבור קוד →תנו שם לפרויקט, ואז הדביקו את כתובת המאגר (מהכפתור הירוק Code ב-GitHub) ואת הענף שממנו האתר פועל, בדרך כלל main. בחרו איך aiKit מתחבר אליו. אסימון GitHub: אסימון מדויק שתיצרו ב-GitHub למאגר הזה בלבד, עם Contents מוגדר ל-Read and write; הוא מתאים לכתובת מסוג https://. מפתח פריסה: זוג מפתחות שנוצר רק למאגר הזה, שאת החלק הציבורי שלו מוסיפים תחת Settings, Deploy keys במאגר, עם סימון Allow write access; הוא מתאים לכתובת מסוג git@. מאגר ציבורי: קריאה בלבד, כלומר שינויים שאושרו אין לאן לשמור; השתמשו בו רק כדי לעיין.
את האסימון או המפתח מדביקים בעצמכם. הם נשמרים מוצפנים במנוע של aiKit ולעולם לא מוצגים שוב, לאף אחד. הדף מציג רק טביעת אצבע. חיבור המאגר מעתיק את הקוד למנוע וזיהוי סוג הפרויקט (Laravel, JavaScript או קבצים סטטיים). שום דבר במאגר לא משתנה.
ניתן לחבר גם פרויקט קיים: בלשונית האירוח שלו, הבעלים רואים את חיבור הקוד שלכם.
השרת שלכם: האתר נשאר בדיוק במקומו. הזינו את כתובת השרת, פורט ה-SSH (בדרך כלל 22), ההתחברות ש-aiKit משתמש בה (שלבי ההגדרה יוצרים משתמש בשם aikit), התיקייה של האתר (לאתר Laravel Forge, /home/forge/your-site.com), פקודת הפריסה שהאתר already משתמש בה (בדרך כלל bash scripts/deploy.sh), והדפים שחייבים להגיב אחרי כל פריסה, כתובת מלאה בכל שורה. הדביקו את המפתח הפרטי של משתמש השרת (שנוצר בשלב 1 של ההגדרה). שמרו ובדקו את החיבור.
בפעם הראשונה ש-aiKit מגיע לשרת, הוא מציג את טביעת האצבע של השרת ושואל האם זה השרת שלכם? השוו אותה למה שהשרת הדפיס בשלב 6 של ההגדרה. לחצו על It matches. Connect רק כששתיהן זהות. מכאן והלאה, שרת אחר בכתובת הזו ייחסם. כשהבדיקה עוברת, הדף מציין איזו גרסה השרת מריץ כרגע.
אירוח של aiKit: aiKit בונה ומגיש את הקוד בעצמו, עם כתובת חינמית כדי להתחיל. מתאים במיוחד לאתרים ולממשקי קצה.
תחת Server setup הדף מציג שמונה שלבים להעתקה והדבקה, כבר מלאים בערכים שלכם; לכל אחד יש כפתור Copy. שלבים 1 ו-8 רצים על המחשב שלכם, שלבים 2 עד 7 רצים על השרת כמשתמש עם sudo.
מה הם בונים: התחברות ללא סיסמה וללא מעטפת (שלב 2). המפתח היחיד שלה נעול לסקריפט שער קטן (שלבים 3 ו-5) שמקבל בדיוק שתי פקודות: status (איזו גרסה פועלת, והאם האתר במצב תחזוקה) ו-deploy של commit מדויק אחד. Deploy רץ כמשתמש של האתר דרך כלל sudo אחד, בודק שהענף ב-GitHub מצביע על ה-commit המדויק הזה, ואז מריץ את סקריפט הפריסה הקיים שלכם ללא שינוי. שלב 4 מגדיר הרשאות תיקייה כך שההתחברות מגיעה רק לתיקיית האתר: לא לאתרים האחרים באותה תיקיית בית, ולעולם לא ל-.env. שלב 7 בודק הכול ומציין מה אתם אמורים לראות בכל שורה, ושלב 8 בודק את ההתחברות מהמחשב שלכם לפני שתדביקו את המפתח שלה ב-aiKit.
אם השרת מארח גם עסקים אחרים, זו הנקודה החשובה: משתמש aiKit יכול לפרוס רק את האתר הזה ולא שום דבר אחר. הקוד של האתר עדיין רץ כמשתמש של האתר, בדיוק כמו כשאתם פורסים בעצמכם מ-GitHub, ולכן כל שינוי נבדק וקבצים רגישים מוגנים.
ארבע אריחים בראש הדף. Repository: המאגר, הענף, ה-commit האחרון וסוג הפרויקט. Runs on: השרת שלכם (עם ההתחברות ומתי הוא הגיב לאחרונה) או אירוח של aiKit. Live release: הגרסה שהאתר מריץ, מי יצר אותה ומתי. Pages: כמה מהדפים שחייבים להגיב הגיבו בבדיקה האחרונה; Check now מבקר בהם שוב, וכל דף שלא הגיב מופיע למטה עם מה שהחזיר.
מתחת לאריחים: Request a change (או השינוי הפתוח כרגע), Releases, Change log, Protected files, ולבעלים גם Connection.
הקלידו מה צריך להשתנות, וציינו את הדף ומה תרצו לראות, ולחצו על Make the change. הכרטיס הופך ל-Change #1 עם התקדמות חיה: משיכת הקוד העדכני, הקבצים ש-AI קורא ועורך, ואז כל בדיקה. ה-AI עורך קבצים בלבד; הוא לא מריץ פקודות. שינוי אחד פתוח בכל פרויקט בכל רגע, וכל בקשה נספרת במכסת ה-AI של הפרויקט.
כשהוא מסתיים תראו: הבקשה ומי ביקש אותה; מה ה-AI אומר שעשה; הבדיקות, כל אחת עם וי או איקס והפלט שלה; לחצני Preview לדפים שנבדקו; הקבצים עם Added, Changed או Removed ותג Protected היכן שרלוונטי; וההבדלים, קובץ אחר קובץ, בירוק לשורות שנוספו ובאדום לשורות שהוסרו. ההבדלים האלה הם בדיוק מה שייכתב ויפורסם.
אישור ופריסה (לבעלים ולבונים) מבצע את השינוי לענף עם הודעה שמציינת מי ביקש ומי אישר, דוחף אותו (אף פעם לא בכפייה: אם מישהו דחף בינתיים, השינוי מסומן כלא עדכני ושום דבר לא נפרס), פורס אותו ובודק את הדפים. ביטול מוחק את השינוי לאחר אישור; שום דבר לא נפרס. סוקרים יכולים לקרוא הכול אבל לא ללחוץ על אף אחד מהם.
לאחר שהבדיקות עוברות זו הגדרה תחת חיבור, בדיקות וביקורת. המתנה לאישור היא ברירת המחדל. פריסה אוטומטית פורסת שינוי בעצמה רק כאשר כל הבדיקות עברו ולא השתנה קובץ מוגן; כל מקרה אחר ממתין עדיין.
בפרויקט Laravel הבדיקות הן: כל קובץ PHP ששונה נותח תקין (php -l); כל תצוגת Blade מתקמפלת (php artisan view:cache); החזית נבנית (npm run build); והאפליקציה עולה בהרצת בדיקה עם מסד נתונים SQLite זמני, עם מיגרציות וזריעה מהמאגר, וכל דף ב-Pages שהרצת הבדיקה חייבת לפתוח מחזיר 200. הבדיקות רצות במנוע של aiKit, לעולם לא בשרת שלך ולעולם לא מול מסד הנתונים החי שלך. קובץ .env של הפרויקט לעולם לא מועתק או נקרא; הרצת הבדיקה מקבלת הגדרות זמניות בלבד.
בדיקה שנכשלה חוסמת את האישור. רק הבעלים יכול לסמן את תיבת הפריסה למרות שבדיקות נכשלו, עבור בדיקה שנכשלה מסיבה שאינה משפיעה על האתר החי.
התצוגה המקדימה פותחת את האפליקציה ששונתה מהרצת הבדיקה בלשונית חדשה, עם נתוני בדיקה וטפסים כבויים. היא נסגרת לאחר 15 דקות משימוש אחרון, ומסתיימת כאשר השינוי מאושר או מבוטל.
ה-AI לא נוגע בקבצים מוגנים. הרשימה מתחילה ב: מיגרציות שכבר רצו באתר החי (כל מיגרציה בגרסה החיה, שכן כל פריסה מריצה אותן), מיגרציות חדשות (הן ישנו את מסד הנתונים החי בפריסה הבאה), סקריפט הפריסה, וקבצי התלויות (composer.json, composer.lock, package.json, package-lock.json). לכל פריט מופיע הסבר מדוע. הבעלים מוסיף קובץ או תיקייה (config/** פירושו הכול תחת config) עם סיבה, מסיר פריטים, ולוחץ על שמירת קבצים מוגנים.
כדי לשנות קובץ מוגן בכוונה, הבעלים מסמן את אפשרות אישור קבצים מוגנים לבקשה זו. לאחר מכן השינוי מציג אילו קבצים מוגנים נגעו בו, ורק הבעלים יכול לאשר אותו, לאחר סימון כן, פרוס את השינויים בקבצים מוגנים. בונה שלא מסמן דבר לא מקבל גישה לקבצים מוגנים.
קובצי .env, מפתחות פרטיים ו-auth.json נמצאים בדרג מחמיר יותר: לעולם לא נקראים, לעולם לא משתנים, לעולם לא חלק מהשוואה, ואף אחד לא יכול לכבות זאת.
בפעם הראשונה ש-aiKit מגיע לשרת שלך, הוא רושם מה השרת מריץ כגרסה 1, לפני aiKit, כך שאפילו הפריסה הראשונה של aiKit ניתנת להחזרה לאחור. לאחר מכן, כל פריסה היא גרסה ממוספרת: שינוי (שינוי מאושר; שמו פותח את אותו שינוי), פריסה מחדש, או החזרה לאחור, עם ה-commit שלה, מי ביצע אותה, הסטטוס שלה (חי, קודם, חי אך דפים נכשלים, הפריסה נכשלה), כמה דפים ענו, ויומן הפריסה. aiKit שומר את 5 האחרונות.
פריסת הקוד האחרון פורסת את החדש ביותר שנמצא כרגע בענף, לאחר אישור, למשל כאשר מישהו דחף תיקון ישירות.
החזרה לגרסה זו, לגרסה קודמת, יוצרת commit חדש שהקבצים שלו הם בדיוק קבצי אותה גרסה, דוחפת אותו ופורסת אותו בדרך הרגילה, ולאחר מכן בודקת את הדפים. ההיסטוריה לעולם אינה נכתבת מחדש, ולכן ניתן להחזיר גם את ההחזרה לאחור עצמה.
כל בקשה עם המספר שלה, הבקשה, מי ביקש, מי אישר או ביטל אותה, מתי, ומה מצבה. לחיצה על שורה פותחת את השינוי עם בדיקותיו והשוואתו; הכתובת מקבלת ?change=<id>, כך שתוכל לשתף את הקישור עם הצוות שלך.
יש לכם שאלה קצרה וספציפית? כדאי להציץ בשאלות הנפוצות.