האם החיבור הבא אפשרי? GitHub + GitLab CI/CD
בתקופה האחרונה ישנה התעניינות גוברת ב- GitLab ובפרט ברכיב ה- CI/CD המתקדם שמגיע built-in במוצר.
לאור זאת כתבנו לאחרונה כמה תכנים בנושא וקיימנו כמה מפגשים בנושא (כולם מוקלטים), וקיבלנו הרבה שאלות מעניינות.
במאמר להלן אני מתמקד באחת השאלות שנשאלנו כמה פעמים, והיא: האם אפשר לחבר בין GitHub ל- GitLab CI/CD ? ולמעשה ואריציה של השאלה היא "האם החיבור Jira + GitHub + GitLab CI/CD אפשרי? " (הואיל ולעתים משתמשי GitHub גם עובדים עם Jira) .
והתשובה לכך חיובית.
בדקנו את הנושא לעומק ובפוסט הזה נסביר כיצד זה מתאפשר.
ממה שראינו , בסיטואציות בהן השאלה נשאלת – בחברה יש כבר GitHub ולרוב גם Jenkins , והרצון הוא להחליף את Jenkins לפתרון מודרני יותר, ויחד עם זאת לא רוצים להחליף את GitHub כי הושקעה בו עבודת התאמה לארגון (ולמרות שכידוע GitLab הוא תחליף מודרני ומתקדם גם ל- GitHub – אך על כך כבר כתבנו כמה מאמרים בעבר וגם הקלטנו case study של חברה שעשתה את המעבר הנ"ל [קישור בהמשך]).
החיבור אפשרי הן בגירסת ענן ציבורי (github.com) והן בגירסת self-hosted שבו השרת בבעלותכם (דהיינו on-premises כאשר השרת מתארח אצלכם או באירוח פרטי בענן כלשהו). למעשה החיבור אפשרי בכל צורות ההפצה של GitLab CI/CD ושל GitHub.
החיבור ביניהם מתאפשר בעזרת שני פיצ'רים שקיימים ב- GitLab :
- GitLab CI/CD for external repositories (נוסף במרץ 2018)
- Remote repository pull mirroring (קיים מאז 2017)
מנסיוננו, מומלץ לבצע תכנון לפני השימוש בהם (לדוג': כיצד יראו תהליכי העבודה וה- pipelines ; הדרכות למשתמשים וכו').
השימוש בפיצ'ר השני (pull mirroring) גם מצריך התאמה תכנונית נוספת ע"מ לנצל נכון את הפיצ'ר ואת ה- best practices הטמונים בו.
איך יראה תהליך העבודה יחד?
בתרשים להלן תהליך עבודה בסיסי שבנינו ואותו אנו מציגים לחברות להן אנו מסייעים בפיתוח תהליכי פיתוח ו- pipelines.
(כאמור, התהליך להלן הינו בסיסי יחסית, אך כולל את כל השלבים ב "רביעיה הקלאסית" (קישור למאמר בהמשך), וניתן לשנות בו דברים רבים בהתאם לצרכים ספציפיים בכל חברה)
הסבר לתרשים לעיל:
- The group leader creates an issue in JIRA to fix a bug or develop a feature and assigns it to a developer. The issue is in the “To Do” status.
- The developer starts working. He moves the issue to status “Doing”, then creates a branch and clones or pulls the repo to his workstation.
- After the feature is developed/the bug is fixed, the developer pushes his work to the GitHub server, which triggers a CI pipeline.
- If the pipeline succeeds, the developer creates a Pull Request, thus starting a code review.
- As a result of the code review, the developer may be requested to do a number of changes before the Pull Request is merged, with each change triggering a CI pipeline.
- At last, the Pull Request is merged into the master branch, and again a CI pipeline runs to check the merge result.
- Some changes may be needed on the master branch, after which the software is marked as a new baseline and the JIRA issue is marked as “Done”
- Note that there can be many variations on this flow. E.g., there can be an additional JIRA status, “QA Testing” to which the issue moves when a Pull Request is merged.
לסיכום (ונקודות נוספות שלמדנו מהבדיקה שביצענו):
- ניתן לחבר בין GitHub ל- GitLab CI/CD (וכך מקבלים את כל הפונקציונליות והפיצ'רים הקיימים ב- GitLab CI/CD)
- ניתן לחבר בין Jira + GitHub + GitLab CI/CD
- ניתן גם לחבר בין Jira + GitLab (בעבר כתבנו מאמר בנושא וגם הוצאנו וידאו המדגים זאת)
- לחילופין ניתן להשתמש ב- GitLab לכל הפונקציונליות שמגיעה מ- Jira ו- GitHub
(דהיינו ש- GitLab יכול לשמש ככלי אחד שמחליף את Jira + GitHub + Jenkins) - למעשה אפשרי לחבר באופן דומה את GitLab CI/CD מול כל שרת git (כגון Bitbucket, gitolite, gerrit וכו')
- האם כדאי מבחינת חסכון כספי להשאר עם GitHub? לא בטוח – הדבר תלוי בכמה גורמים (אפשר להתייעץ איתנו בנושא)
שאלות? נשמח לענות על כל שאלה – אפשר לפנות אלינו במייל devops@almtoolbox.com או טלפונית 072-240-5222
קישורים רלבנטים:
- מאמר: סקירת הפיצ'רים הקיימים ב- GitLab CI/CD (עברית)
- דו"ח Forrester המציג דו"ח השוואתי של כלי CI מובילים ויתרונות של GitLab CI/CD (אנגלית)
- דמו טכני של GitLab CI/CD
- רשימה מלאה של כל הפיצ'רים הקיימים ב- GitLab , מסודרים לפי Edition ו- Category
- עמודי מוצר: Jira GitHub GitLab Jenkins
- מאמר: "הרביעיה הקלאסית" למפתחי תוכנה (עברית)
- רשימת קורסים שאנו מעבירים על GitLab, git, Jira, Jenkins
- GitLab CI/CD workshop – בקרוב
- בקרוב: הדגמה של שימוש ב- GitLab CI/CD Pipelines בחברת StartApp (עברית)
רוצים להשאר מעודכנים כאשר נוסיף לאתר מידע נוסף על GitLab CI/CD ? שלחו לנו את המייל הבא. אנו מתחייבים לא לשלוח SPAM .