אם אתה משתמש ב-GitHub Actions כתהליך בנייה ושחרור שלך וגם הקבוצה שלך משתמשת ב-Slack, האם ידעת שאין לך אפילו לצאת מ-Slack? צור Slack bot לקריאה ל- GitHub Actions workflows ישירות מ-Slack באופן אוטומטי!
במדריך זה, אתה הולך ללמוד איך להגדיר בוט צ'אט חדש ב-Slack באמצעות כלי בניית הבוטים הנקרא Hubot ולהפעיל באופן אוטומטי GitHub Actions workflow להתקנת קוד על שרת.
בואו נתחיל!
דרישות מקדימות
מדריך זה יהיה הדגמה מעשית. אם ברצונך להתקדם יחד, הקפד לוודא שיש לך את הדברים הבאים:
- A Slack Workspace
- A GitHub account and a GitHub personal token
- A Linux server to deploy code to – This tutorial will use Ubuntu 19.
- A local Linux machine – This tutorial will use Ubuntu so that all local commands will be Linux. If you’re running another operating system, the commands may be slightly different.
- פרטי כניסה SSH כדי להתחבר לשרת שבו תתבצע התקנת הקוד.
- A code editor of your choice that understands YAML like Visual Studio Code.
יצירת פרויקט וזרימת GitHub Actions
לפני שתוכל לקרוא במהיר ל- GitHub Actions workflows מתוך Slack, עליך ליצור תחילה את הזרימה העבורה.
כדי ליצור את הזרימה, נצור תיקייה לפרויקט שתכיל את כל הקבצים שתעבוד עליהם.
1. פתח את יישום הטרמינל האהוב עליך.
2. כעת הפעל את הסדרה של הפקודות למטה כדי ליצור תיקייה לפרויקט בשם Hubot ולנווט אליה.
3. לאחר מכן, הפעל את npm init
כדי ליצור קובץ package.json של Node.JS. הרצת npm init
יוצרת פרויקט סטנדרטי של Node.JS הכולל את קובץ package.json שמכיל מידע שונה על הפרויקט ועל כל חבילות NPM תלויות בו.
4. כעת, צור תיקייה בשם workflows וקובץ deploy.yml
לקובץ תהליך. קובץ התהליך הוא סדרה של שלבים שמוגדרים בסדר שGitHub Actions יעקוב אחריהם.
5. באופן הבא, תגדיר כל אחד מ- סודות GitHub שלך שהעבודה שלך תקרא. הזרם שאתה עומד ליצור יעיין בסודות אלו. מכיוון שתצטרך את כתובת השרת שלך, שם המשתמש, הסיסמה והפורט של השרת שלך ל-SSH, בוא ניצור סודות של GitHub.
בקר בכתובת ה-URL הזו https://github.com/yourusername/yourrepository/settings/secrets/actions כאן תוסיף את סודות ה-GitHub שלך. החלף yourusername בשם המשתמש שלך ב-GitHub וyourrepository בשם המאגר שלך ב-GitHub.
לחץ על כפתור סוד חדש למאגר, כפי שמוצג למטה, כדי למלא את המידע על הסוד שאתה מוסיף.

6. עכשיו מלא את שדות השם והערך של הסוד, ואז לחץ על הוספת סוד כדי לשמור אותו. הדף יפנה לדף הסודות של GitHub שבו תראה את כל הסודות שלך. כדי להוסיף עוד סודות, לחץ על כפתור הסוד החדש למאגר כפי שעשית קודם.
ודא שאתה שומר סודות עבור המשתנים הנתונים עם אותו שם בדיוק מקביל, שהם HOST, USERNAME, PASSWORD, ו-PORT.


7. לבסוף, פתח את הקובץ ~/Hubot/.github/workflows/deploy.yml של זרימת העבודה בעורך הקוד שלך, והעתק/הדבק את הקוד הבא. הקוד למטה הוא הזרימה שתרוץ בכל פעם שתפעיל את הזרימה דרך סלאק מאוחר יותר.
כאשר אתה מפעיל את הזרימה, יתרוותנו מספר פעולות:
- GitHub Actions יפענח את קובץ העבודה למטה כדי לבצע SSH אל
host
המוגדר בסודHOST
עם שם משתמש וסיסמה המוגדרים כסודות בשםUSERNAME
ו־PASSWORD
. - העבודה תוריד אז תוכן ממאגר ה-GitHub עבור סניף מסוים (
$branchName
) על ידי הפעלתgit pull origin$branchName
. ודאו ששם הסניף מכיל את הקוד שתרצו להעלות. - תשתמשו ב־חבילת עבודה מה-שוק GitHub בשם ssh-remote-commands. החבילה כוללת כדורגל נחמד שמאפשר לעקוף מצב שבו עליכם לספק רק את המארח, שם המשתמש, הסיסמה, הפורט, והפקודה להרצה בסביבת הייצור.
וודאו שהשרת שלכם מצויד ב-Git ובפרטי הכניסה הדרושים כדי למשוך קוד ממאגר ה-GitHub
הפעלת תהליך העבודה באופן ידני
יצרת כעת את תהליך הפעולות של GitHub Actions להפעלה דרך Slack. אך בנקודה זו, הקוד שלך נמצא רק במחשב המקומי שלך. כדי להפעיל את תהליך העבודה, יהיה עליך לדחוף קוד ל־GitHub.
הרצת סדרת הפקודות למטה מספרת ל־git איפה יש לדחוף ולמשוך את הקוד מ־GitHub המרוחק שלך. בפקודת git remote add origin
למטה, החלף את yourusername
וְ yourrepository
בשם המשתמש שלך ב־GitHub ובשם המאגר שלך
בואו נבדוק תחילה אם הקוד שלך עובד. הפעל/י את הקוד שלך באופן ידני באמצעות התוסף הפופולרי curl.
הפעיל/י את הפקודה למטה כדי לבצע בקשת post למאגר ה־GitHub שלך בכתובת URL https://github.com/username/repository/dispatches כדי להודיע ל־GitHub להפעיל קובץ תהליך עבודה deploy.yml שיצרת במקור. החלף/י את username בשם המשתמש האמיתי שלך ב־GitHub ואת repository במאגר ה־GitHub שלך.
החלף/י את $github_personal_token
בקוד למטה באמצעות האקספרסיה האישית שלך.
יצירת Slack Bot עם Hubot
כיום, שאנך מסוגל להפעיל באופן ידני את GitHub Action Workflow, זו התחלה טובה. ננסה כעת לאוטומטיזציה של אותם צעדים ידניים דרך Slack Bot. תיצור Slack Bot שמאזין לפקודות שלך ומפעיל את GitHub Action עם ארגומנטים.
יש לך שני אפשרויות ליצירת Slack Bot, או לבנות אחד מאפס או להשתמש בחבילת hubot מוכנה עבור workspaces של Slack. במדריך זה, תשתמש בחבילת Bot מוכנה בשם Hubot. Hubot הוא כלי אוטומציה פתוח המשתלב עם שירותי צ'אט כמו Slack, Discord, Gitter, TeamSpeak ועוד.
ליצירת בוט מותאם אישית בלעדייך, בלעדייך להשקיע זמן רב. למה? כי עליך לטפל בכל תהליכי ההגדרה, האזנה ל-Webhooks, ואחסון הבוט. לכן, במדריך זה, תשתמש באפליקציית Slack של Hubot כדי לפשט את כל התהליכים הללו.
התקנת Hubot עם Npm
מכיוון שאתה משתמש ב-Hubot ליצירת בוט של Slack, יש להוריד ולהתקין את Hubot תחילה במחשב המקומי שלך. Hubot יהיה המחבר המקשר בין Slack לפעולות GitHub.
1. בטרמינל שלך, נווט (cd
) לתיקיית הפרויקט שלך (~/Hubot
).
2. התקן את החבילות yo
ו־generator-hubot
באופן גלובלי (-g
) במחשב המקומי שלך עם פקודת npm install
. החבילה yo עוזרת לך להתקין פרויקטים חדשים על ידי יצירת פרויקטים בכל שפה (Web, Java, Python, C#, וכו'). החבילה generator-hubot משתמשת בחבילה yo להתקנת כל התלות יחד עם הגדרות ראשוניות.
לאחר ההתקנה, תוכל להריץ את הפקודה yo
מכל מקום, שכן הותקן באופן גלובלי.
3. עכשיו, צור בסיס ל-Hubot boilerplate עם הפקודה הבאה. Boilerplate הוא קטע קוד שמתווסף בהרבה מקומות. בלעדיו, תצטרך תמיד לכתוב קוד מתוך.
הפקודה למטה יוצרת בסיס ל-Hubot boilerplate בתיקיית הפרויקט שלך. ה-Hubot boilerplate מקשר את Slack (--adapter=slack
) כך שהבוט יכול להאזין ולהגיב להודעות בערוץ ה-Slack. yo hubot --adapter=slack
הוספת Hubot למערכת ה-Slack שלך
כעת ש-Hubot מותקן במכשיר המקומי שלך, עליך להגדיר את Hubot כך שיתקשר עם Slack.
בואו להתקין את Hubot במערכת ה-Slack שלך.
1. פתח את דפדפן האינטרנט שלך ונווט להגדרות המנהל של Slack עם ה-URL, כמו https://workspacename.slack.com/admin/settings. החלף workspacename בשם הממשי של מערכת ה-Slack שלך.
לחץ על Configure apps בלוח השמאלי, כפי שמוצג למטה, כדי שתוכל לחפש את Hubot בחנות. Slack יש לו חנות בה תוכל למצוא יישומים מוכנים.

2. לחץ על סרגל החיפוש, ואז הקלד hubot כדי לחפש את Hubot ב-marketplace ובחר Hubot.
כעת, לחץ על לחצן Add to Slack, כפי שאתה רואה למטה, כדי להוסיף את Hubot למערכת ה-Slack שלך.

3. לבסוף, מלא מידע כללי אודות הבוט שלך, כמו השם (deployerhubot) והאייקון. שים לב ל מזהה ה- API שכדאי לך לשמור, שתשתמש בו מאוחר יותר ב-Hubot Deployer כדי להפעיל את הבוט מתוך הפרויקט שיצרת.

בדיקת אינטגרציה של זרימת עבודה ב-GitHub Actions עם Slack
עכשיו יש לך את Hubot מותקן במקום העבודה שלך ב-Slack, אז בוא נבדוק את הבוט על ידי האזנה ושליחת הודעות לערוץ. אך תחילה, עליך להפעיל את הבוט.
1. הרץ את הפקודה למטה בתוך ספריית השורש של הפרויקט כדי להפעיל את הבוט עבור Slack (--adapter slack
) מתוך סוגריים זוויתיים (./bin/hubot
). ודא שאתה מחליף את $token
באזכור API ששמרת לך מקודם
2. הרץ את הפקודה למטה כדי להזמין (/invite
) את הבוט (botusername
) לערוץ שלך ב-Slack. החלף את botusername
בשם הבוט שנרשמת בשלב השלישי של ״הוספת Hubot למקום העבודה שלך ב-Slack״.
עכשיו, אם תרצה לבדוק אם האינטגרציה עובדת, הזכור להזכיר לבוט בטקסט ב-Slack, לדוגמא @deployerhubot ping, ואם הבוט יגיב PONG, כפי שמוצג למטה, אז כל הכבוד.

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

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

התחלת זרימת GitHub Actions מתוך Slack
עכשיו שאתה הפעלת את הבוט שלך ב־Slack, זה הזמן להתחיל זרימת GitHub Actions מתוך Slack!
אתה צריך את הגמישות להפריד את הענף הנתון לשרת הנתון, כמו למשל למשוך את הקודים מהענף הנתון. אתה תלמד את הבוט להגיב באופן אוטומטי כאשר מישהו מקליד ***@*bot deploy API feature-x to production בערוץ ב־Slack. אתה יכול לאמת את שם הסביבה שבה בהמשך יהיה רק אנשים מסוימים שיכולים להפעיל פרקים ספציפיים וסביבות ספציפיות.
לאוטומציה של תגובות הבוט:
1. צור תיקייה בשם ~/Hubot/scripts. התיקייה ~/Hubot/scripts היא המקום שבו תשמור סקריפט שמפעיל את זרימת העבודה שלך ב־GitHub.
2. בעורך הקוד שלך, צור קובץ בשם bot.js בתוך התיקייה ~/Hubot/scripts. עכשיו העתק את הקוד למטה והדבק אותו בתוך קובץ ה־bot.js.
הקוד למטה מאפשר לבוט להקשיב להודעות הצ'אט בערוץ ב־Slack, ולאחר מכן להפעיל את זרימת העבודה ולשלוח תגובה לערוץ ב־Slack.
3. לבסוף, שלח את הודעת @שם_הבוט deploy api staging to dev בסלאק, ותראה תגובה דומה, כפי שמוצג למטה.
קבצי תהליך עשויים להתפעל באירועים שונים ב־GitHub, כמו דחיפת קוד לסניף מסוים, יצירת תגיות, יצירת בקשות משיכה, בקשת כתובות URL ועוד רבים.

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