CI / CD כשירות: 10 כלים לאינטגרציה רציפה ומסירה בענן

הענן והאינטגרציה הרציפה (CI) הם התאמה טבעית. בעוד הענן משחרר אותנו מהכאב של התקנה ותחזוקה של שרתים פיזיים, אינטגרציה מתמשכת ממחזרת הרבה מהכאב של בנייה, בדיקה ופריסה של הקוד שלנו. אם שניהם שואפים להוריד את העבודה מכתפיהם של צוותי הפיתוח, זה רק הגיוני לשלב ביניהם ולבטל עוד יותר שינויים בצעד אחד.

ישנם שירותי אינטגרציה רציפים רבים וכולם עושים אותו דבר, לפחות במובן מופשט. הם מתחילים ברשימת המשימות כמו קומפילציה או בדיקה שיש לבצע לפני שהעולם יוכל להעריך את הגאונות שבתוכנה החדשה שלך. כאשר אתה מבצע את שורות הקוד שלך, הכלים מתחילים לעבוד דרך רשימת הבדיקה עד שהם נתקלים במחסום. אם אין מחסומים, כולם מרוצים.

כל אחד יכול להשתמש בשילוב מתמשך לכל פרויקט פיתוח תוכנה, אך מהיתרונות הגדולים ביותר נהנים צוותים, רצוי צוותים גדולים העובדים על אותם גושי קוד משתלבים. היישומים היסודיים ביותר של אינטגרציה רציפה בונים ובונים את הקוד לפני בדיקתו ובדיקתו מחדש, הכל בחיפוש אחר שגיאות וחוסר תאימות חדשים שאולי נוצרו כאשר חברי צוות שונים בודקים את הקוד שלהם. שרתי אינטגרציה רציפים מסנכרנים את עבודתם של כל המתכנתים ומסייעים לצוות לאתר כל בעיה. 

חלק מרשימות המשימות עבור שרת ה- CI מסתיימות בבדיקות, אך לאחרונה יותר ויותר צוותים מרחיבים את הרשימות כך שכוללים פריסת הקוד החדש, תהליך המכונה לפעמים "פריסה מתמשכת". פריסה אוטומטית לחלוטין גורמת לחלק מהאנשים להיות עצבניים ולעתים קרובות הם יוסיפו כמה הפסקות ידניות בתהליך. הוספת מעט דין וחשבון וביטחון אנושי מאפשרת להם להירגע מעט. הם יקראו לגישה ההיברידית הזו "מסירה רציפה" מכיוון שהיא מעבירה את הקוד לאיזשהו ערוץ בימוי או בדיקה שם הוא יחכה לאדם שיעשה את הדחיפה הסופית לייצור. 

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

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

בנוסף לתמיכה רחבה בכל השפות העיקריות, שירותים אלה מכסים מספר מפתיע של השפות הקטנות ויותר מכמה משונות מוזרות וחריגות באמת. זו יותר תוצאה של החלטות אדריכליות טובות בהתחלה מאשר כל מאמץ הרואי של היזמים. רשימות המשימות מקודדות כמעט תמיד כפקודות עבור מעטפת או שורת פקודה כלשהי, כך שכלי האינטגרציה הרציפה די ממשיכים להנפיק את הפקודות עד למיצוי הרשימה או להופעת מחסום בלתי עביר כלשהו. חלק מהשפות כמו Java מציעות אפשרויות מתוחכמות יותר אך לרוב הכלים יכולים להשיג כל דבר שתוכלו לעשות עם שורת פקודה. 

להלן 10 אפשרויות שונות לביצוע אינטגרציה רציפה בענן.

CloudBees

CloudBees Core התחיל עם Jenkins, פרויקט הקוד הפתוח הידוע לאינטגרציה רציפה, ואז הוסיף בדיקות, תמיכה והבטחה מסוימת שהקוד פשוט יפעל. החברה חילקה את כל התוספים הניסיוניים, הוסיפה כמה משלהם, ואז ליטשה את הנכונים כך שהם יעבדו כצפוי כשתזדקק להם.

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

CloudBees מציעה מגוון נקודות מחיר הנעות בין שכבות חינם ל"ערכות התחלה "למשך שנה שלמה של השירות. החברה פורצת גם תמיכה בג'נקינס לכל מי שזקוק לעזרה בכלי אך אינו זקוק למחשבת הענן או רוצה בה.

קוד צינור AWS

הכלי של אמזון לאינטגרציה ופריסה מתמשכת, AWS CodePipeline, מותאם למסירת קוד לשרת AWS, תוך שהוא פתוח למסלולים משוכללים יותר עבור הקוד והנתונים שלך. הכלי הבסיסי מציע מבחר נאה של סביבות בנייה מוגדרות מראש עבור השפות העיקריות (Java, Python, Node.js, Ruby, Go, Android, .Net Core עבור Linux) ואז זורק את התוצאה לדלי S3 לפני שליחתו לשרת כדי להתחיל לרוץ.

יש מספר גדול באופן מפתיע של שכבות עם שמות שונים במקצת. CodeBuild תופס את הגאונות האחרונה שלך מ- CodeCommit כאשר הוא מופעל על ידי CodePipeline ואז מוסר את התוצאה ל- CodeDeploy. אם זה יותר מדי דברים קוד שתוכלו להגדיר, תוכלו לקפוץ ימינה ל- CodeStar, שמציע שכבה נוספת של אוטומציה. אם רק היה CodeBugEraserStar שימחק גם את כל הטעויות שלנו באופן אוטומטי. ראוי לציין כי אינך משלם טכנית עבור אחת משכבות קוד אלה. אמזון מחייבת אותך רק עבור משאבי החישוב והאחסון המשמשים בדרך. זה לא בדיוק בחינם, למרות שזה מרגיש כמו זה.

צינורות Bitbucket

Atlassian, מפתחי לוח מעקב העבודה הפופולרי, Jira, ומאגר הקוד, Bitbucket, החליטו למנף את אחיזתם בזרימת העבודה שלנו על ידי יצירת Bitbucket Pipelines, כלי אינטגרציה מתמשך בענן Bitbucket. הרוטב הסודי הוא אינטגרציה רבה יותר, במקרה זה בצורה של קשרים בין מנגנון הבנייה לבין הכלים האחרים של אטלסיאן. לפחות מבחינה קוסמטית, צנרת היא אפילו לא דבר נפרד. זו רק אפשרות תפריט נוספת עבור כל פרויקט ב- Bitbucket. אפשרות תפריט נוספת מצביעה על פריסות, ומאפשרת לך לבחור לאן הבנייה מסתיימת.

הקשרים הם ברכה ומגבלה. אם תבחר באחת מהתבניות שהוגדרו כבר עבור השפות העיקריות (Java, JavaScript, Python, PHP, .Net וכו '), תוכל לבנות ולפרוס את הקוד שלך בכמה לחיצות. אבל אם תתרחק מהסטנדרטים, תתחיל לגלות שהאופציות אינן קיימות. Atlassian אמנם מעודדת שוק של אפליקציות שנראות כמו תערובת של תרשימים ו- webhook לשירותים אחרים. האפליקציה העליונה בתרשים כשאני כותב את זה תחבר את Bitbucket עם ג'נקינס, ככל הנראה כדי לעשות משהו שאי אפשר לעשות אותו במהירות בתוך הקירות.

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

GitLab CI / CD

אחת המתחרות הגדולות ביותר של אטלסיאן היא GitLab, חברה אחרת שרוצה לטפל בכל שלב בתהליך בין האצבעות וההפעלה. כמו כן, מנגנוני הבנייה, הבדיקה והפריסה של GitLab מחוברים ישירות למאגרי ה- Git שלה, כך שניתן יהיה להפעיל אותם בהתחייבות. התהליך בנוי בעיקר סביב מכולות Docker ומטמון זה יכול לפשט מאוד חלק מעבודות התצורה שיש לבצע סביב בניית ג'נקינס.

משימות הבנייה יכולות להתמקד בכל שפה, אך עליהן להיות מופעלת על ידי GitLab Runner, כלי שינוי גודל אוטומטי שנכתב ב- Go שמוכן לרוב הפלטפורמות. גמישות זו אומרת שתוכל להפעיל כל עבודה אקראית במכונות אחרות, דבר שעשוי להיות שימושי בארכיטקטורות משוכללות שעושות יותר מסתם שירותי מיקרו-שירותים.

התמחור משולב בשכבות השונות לצורך משוער. קבוצות שכבות זהב, למשל, מקבלות את כל התכונות הטובות ביותר כמו לוחות מחוונים לאבטחה ו 50,000 דקות של בנייה על אשכול המכונות המשותף. אין חיוב בגין שימוש במכונות משלך בחלק מהתהליך או במקרים נפרדים בענן אחר.

CircleCI

רבים מכלי האינטגרציה הרציפה מתמקדים בקוד שניתן לבנות בסביבת לינוקס. CircleCI בונה ומספק בעולם הלינוקס, אך הוא מציע גם מוצר שיבנה אפליקציות אנדרואיד וכל מה שיוצא מה- Xcode של אפל (עבור iOS, MacOS, tvOS או watchOS). אם אתה עובד על צוות שמייצר אפליקציות עבור פלטפורמות אלה, אתה יכול לבצע את הקוד שלך ולתת ל- CircleCI לאכוף משמעת בדיקות מסוימת על כל הגאונות השונה של הצוות שלך.

רשימות המשימות מפורטים בקבצי YAML. CircleCI משתמש ב- Docker, במלוא הדרו הרב שכבתי, כדי להגדיר את סביבות הבדיקה עבור הקוד. המבנים מתחילים עם מכולות טריות וכך גם כל הבדיקות. עבודת ה- Mac פועלת במכונות וירטואליות בעלות אורך חיים קצר באופן דומה. פעולה זו מונעת חלק מהבעיות בתצורה מכיוון שבסביבות הנקיות אין סיביות שנותרו בסביבה. (אז אם הבעיות שלך נגרמות כתוצאה משטף דיגיטלי מתמשך, ובכן, זו אשמתך.)

התמחור מתמקד בכמה מעבד הבניינים שלך יונקים. מספר המשתמשים ומספר המאגרים מוגבלים באינסוף. מספר דקות הבנייה והמכולות המבוצעות בבניין זה, נמדדים. המכולה הראשונה היא בחינם ותוכל להריץ בה מבנה אחד. אם אתה רוצה יותר מקבילות או יותר תפוקה, CircleCI מרוויחה קצת כסף. משתמשי ה- Mac לא מקבלים את אותה העסקה החינמית, אך ישנן תוכניות היכרות לכל מי שבודק את השירות.

טרוויס סי

אם ה- build שלך מייצר קוד שצריך לבדוק בתיבות Windows, אז Travis CI מציע לך עצירה אחת. החברה הציעה אפשרויות MacOS ו- Linux במשך זמן מה, אך זה עתה גילגלה את אפשרות Windows, מה שהופך אותו לפשוט יותר לייצר קוד שרץ במקומות רבים עוד יותר.

רשימות המשימות מפורטים גם ב- YAML והמשרות מתבצעות במכונות וירטואליות נקיות עם תצורה סטנדרטית למדי. קוד לינוקס מקבל כמה גרסאות בסיסיות של אובונטו, קוד המק פועל באחד מתריסר שילובים של OS X ו- Xcode ו- JDK. קוד Windows יכול להסתיים בגרסה אחת של Windows Server (1803) לעת עתה. Travis CI מציע רשימה ארוכה של 30 שפות וכללי בנייה מוגדרים מראש ודי מוכנים להפעלה.

התמחור מבוסס על כמה עבודות במקביל יכולות לבצע בבת אחת, אך אין מגבלות פורמליות על מספר הדקות שעבודות אלה יכולות לקחת. זה כאילו שאתה מקבל מספר קבוע של מקרים ייעודיים לעבודה שלך והם מוכנים כל הזמן. אין אפשרויות בחינם לעבודה קניינית, אך פרויקטים של קוד פתוח הם "תמיד בחינם" - כך שזו הדרך הפשוטה ביותר לנסות את Travis CI.

צינורות תכלת

אם אתה תוהה אם למיקרוסופט המודרנית יש גישה "לא הומצאה כאן", אל תסתכל רחוק יותר מקווי הצנרת של Azure. בספרות המכירות נכתב: "כל שפה, כל פלטפורמה." אמנם זה בוודאי מעט היפר-בול, וככל הנראה אין ל- Azure הרבה מה להציע למתכנתים של ENIAC, אך היא מציעה באופן בולט נתיבי מיקרוסופט, לינוקס ו- MacOS עבור הקוד שלך. פינת אפל מכוונת רק לבנות MacOS, לא ל- iOS או tvOS או watchOS, אבל בואו לא נהיה בררנים. זו כוס הרבה יותר ממחצית.

באופן מופשט, המערכת דומה לאחרות. יש סוכנים שמבצעים בנייה לייצור חפצים. חלקם יכולים להתארח בעצמם אם אפשרות זו עוזרת. הערימה מאמצת לחלוטין את מכולות ה- Docker והחומרה של Azure מוכנה להריץ אותם עבורך. ניתן ללחוץ על כל הפרטים הללו יחד עם מעצב חזותי המובנה בדף אינטרנט, או לציין אותם עם YAML אם אתה מעדיף לחיות בעולם שורת הפקודה.

התמחור כולל "עבודה מקבילה" בחינם עם 1800 דקות בנייה. אם אתה רוצה יותר מקבילות או יותר זמן בנוי, אתה מתחיל לשלם. התוכנית כוללת נדבך חופשי נדיב לפרויקטים של קוד פתוח, ומדגיש שוב את רצונה של מיקרוסופט לקחת חלק בקהילת הקוד הפתוח הכללי. אבל אם מיקרוסופט תוציא 7.5 מיליארד דולר לרכישת מקום ליד השולחן על ידי רכישת GitHub, ובכן, זה הגיוני מאוד. היכן יפעל כל הקוד הזה? צינורות תכלת ישמחו להעביר אותה בצורה חלקה לחומרה בתכלת.