failproofai publish כותב את שלושתם מקבצי המדיניות שלפניו, יוצר את ההוצאה, ומעלה אותם.
1. כתוב את המדיניויות
התחל משהו שכבר עובד במקום תבנית עם רווחים ריקים:<name>.mjs, ועוצר — ללא רשת, ללא git, שום דבר לא פורסם. הקובץ שהוא כותב היא מדיניות אחת שכבר חוסמת git push --force. היא מסרבת להשתיק קובץ שקיים.
מדיניויות משתמשות באותו API כמו כל מדיניות מותאמת אישית. שני שדות נוספים חשובים עבור חבילה:
defaultEnabled משתחרר ל-false כשאתה משמיט אותו. failproofai policies add פשוט מפעיל רק את מה שסימנת — התקנת כל מדיניות של זר ללא השגחה היא לא החלטה שהמתקין צריך לקבל עבור המשתמש שלו.
כתוב כמה קבצים שאתה אוהב; קובץ אחד לכל קטגוריה נקרא טוב. כל קובץ בספרייה שרושם מדיניויות משולבים לתוך ההשמעה היחידה שחבילה צריכה להיות.
2. נסה את זה כאן תחילה
לפני שמישהו אחר יכול לראות את זה, אכוף את הקובץ על המכונה הזו:3. פרסום אותה
- מוצא את קבצי המדיניות כאן לפי תוכן — אלה המייבאים
failproofaiוקוראיםcustomPolicies.add— במקום לפי שם קובץ, אז הוא מוצאguards.mjsומתעלם מ-policies.mjsלא קשור. זה לא יורד לתוך תיקיות משנה, כך ש-fixture בדיקה לא נחטף מקרי. - קורא את ה-repo מ-
git remote get-url origin, בספרייה של הקובץ במקום שלך, ומחליט את הגרסה. - מוצא את ההעלמה שלך:
GITHUB_TOKEN,GH_TOKEN, אוgh auth login. זה צריך release-write ושום דבר אחר, ולא מודפס לעולם. - יוצר את המאגר אם הוא לא קיים. זה קורה לפני הבנייה, כך שחבילה שנדחתה בשלב הבא יכולה להשאיר מאגר חדש מאחוריה ללא הוצאה בזה.
- בונה את שלוש ההשמעות, תוקפת אותן עם כללי המטען שלהם — אותו קוד שמחליט מה עלול להתקין על המכונה של זר — אז חבילה שלא יכולה להתקין לעולם נכשלת כאן, שם אתה עדיין יכול לתקן אותה.
- יוצר או מעיד מחדש את ההוצאה ומעלה, החלפת הנכסים של אותו שם.
שמות הנכסים קבועים — הם מה שה-CLI של הצרכן בונה את כתובות ה-URL שלה מ, ללא קריאת API וללא גילוי.
נדחה בזמן בנייה: id שאינו
publisher/name, שם מדיניות המכיל /, מדיניות המצהירה alwaysOn, חסרה description, category או match, ערך שלא רושם שום דבר, וערך המייבא קבצים מקומיים.
עקוף כל דבר שהחלטת:
--id קובע את מזהה החבילה כשהוא צריך להיות שונה מה-repo, --tag קובע את התג של ה-release, --notes מחליף את הערות ה-release שנוצרו אוטומטית — ומהן policies show --releases קורא את המונים ואת ה-commit של כל release — --out בוחר לאן נכתבים ה-assets (ברירת מחדל dist-pack), ו---dry-run בונה אותם בלי לפרסם ואינו דורש אישורי גישה.
כל אחד יכול כעת להתקין אותו עם failproofai policies add acme/support-agent. ראה חבילות מדיניות כדי להצמיד גרסה ולקחת רק חלק מאחד.
רשמו את זה ברכזת המדיניות
הוסף את הנושאfailproofai-policies למאגר ב-GitHub. אין טופס הגשה ואין תור אישור: מרכז המדיניות של הזוחל בוחר את המאגר בחלוף שלו הבא. הנושא רק שמות אותו לשיקול — מה רשום אותו היא הוצאה שהמניפסט שלה אמת נגד SHA256SUMS שלה ופורס תחת אותם כללים ש-CLI משתמש, שהוא בדיוק מה failproofai publish מייצר.
כיצד הגרסה מוחלטת
הגרסה היא הקומיט שאתה פורסם מ — ה-sha הקצר שלו, שנים עשר תווים:a1b2c3d4e5f6. אין שום דבר לבחור ואין שום דבר להגביל, והגרסה שמות בדיוק לאן הבתים באו, אז פרסום אותו מקור פעמיים נותן אותה גרסה.
הוא קורא מהעץ שלפניך, לא מהוצאות המאגר, אז קלון טרי והמכונה מנותקת מהרשת חישוב אותה תשובה ללא שאלה של GitHub מה קרה לפני.
מכיוון שהגרסה שומרת קומיט, הקומיט הזה חייב להיות קיים. ב-terminal, publish כותב אותה בשבילך: היא initializes מאגר כשאין אחד, ומחייבת קבצי מדיניות שונו לפני שהוא בונה. היא מסרבת במקום — מסמן --version כדרך החוצה — כשהוא רץ ללא terminal (קומיט שנעשה על רץ CI היה קיים בשום מקום אחר), כאשר קבצים אחרים מאשר המדיניויות לא מחויבים, או בחילוץ שאין לו קומיטים עדיין. תג ב-HEAD מנצח על ה-sha — מישהו שתיוג v1.2.0 אמר מה הוצאה זו היא.
שא אין סדר שלו, אז השתמש failproofai policies show <owner>/<repo> --releases כדי לראות איזה הוצאה באה קודם — חדש בחלק העליון.
משלוח גרסה חדשה
Commit את השינוי והפעלfailproofai publish שוב — הקומיט החדש הוא הגרסה החדשה. צרכנים רץ אותו failproofai policies add. ללא terminal, או עם דגל בחירה, הם משמרים את תת הקבוצה שבחרו ומדיניות שהם כיבו נשאר כבוי; ב-terminal ללא דגל, הבוחר נפתח pre-ticked עם ברירות המחדל שלך והתשובה שלהם משנה את הבחירה שלהם.
שינוי שם של מדיניות היא שינוי שוביר: מכונה שהיתה כיבתה היא כיבתה שם שלא קיים יותר, והשם החדש מגיע בכל מה defaultEnabled אומר.
מה המשתמשים שלך מאמינים
SHA256SUMS חי באותה הוצאה כמו הנכס, אז זה מוכיח שהבתים הם אלה שפרסמת — לא מי שאתה. מי שיכול לכתוב למאגר יכול לכתוב שני קבצים. ההגנה של המשתמשים שלך היא שהעיכול מוקדש כשהם מתקינים, כך שמה שכתבת לא יכול להשתנות מתחתם לאחר מכן.
פרסום מ-repo שבו אתה שולט בגישת הכתיבה, וטיפול בהוצאת חבילה כמו פרסום חבילה.
המאגר גם חייב להיות ציבורי. התקנות הן HTTPS אנונימי ללא העלמה להצעה, אז repo פרטי קיים מסורב לפני שום דבר בנוי או עלה, וכל publish יוצר הוא ציבורי מאותה סיבה. --allow-private עוקף זה עבור מישהו הנותן את שלוש ההשמעות בדרך אחרת, ואומר בבהיר שלא policies add יכול להגיע אליהם. רק ההוצאה חשובה: התקנות קוראות releases/download/<tag>/<asset> ולא נוגעות לעץ git שלך.
צפוי לפני שתאכוף
מניפסט עלול להצהיר"effect": "observe" — failproofai publish --effect observe הוא מה שמגדיר אותה. המדיניויות האלה רצות וההחלטות שלהן נרשמות והשלכות — שום דבר לא חוסם. זו הדרך למדוד כלל חדש נגד תנועה אמיתית לפני שהוא יכול להפריע לעבודה של מישהו.

