על Jenkins וWebHooks – עדכון אוטומטי כאשר מתבצע שינוי בקוד בריפו שלנו

על Jenkins וWebHooks – עדכון אוטומטי כאשר מתבצע שינוי בקוד בריפו שלנו


לקריאה נוספת:
1. איך להתקין Jenkins בCentOS7
2. יצירת Jenkins Job פשוט שמושך קבצים מGIT
3. על Jenkins וWebHooks – עדכון אוטומטי כאשר מתבצע שינוי בקוד בריפו שלנו
4. קצת על Jenkins Pipelines
5. התקנת DOCKER בJenkins


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

השלבים:

  1. יצירת Access Token בחשבון הגיטאהב שלנו עם הרשאות לקרוא ולכתוב לWebHooks + הוספת שרת גיטאהב לJenkins על מנת שינהל עבורנו WEBHOOKS בגיטאהב.
  2. יצירת Jenkins Job מתאים.
  3. הגדרת הWEBHOOK בגיט רפו שלנו.

יצירת Access Token

בתפריט ההגדרות של הגיטאהב שלכם (https://github.com/settings/profile) ליחצו בתפריט על "Developer Settings" – ואז על "Personal access tokens"
https://github.com/settings/tokens

לאחר מכן ליחצו על "Generate New Token".
בטופס שקיבלנו נמלא את הפרטים, בNOTE אני כתבתי "Jenkins Test" ובהרשאות יש לסמן "admin:repo_hook"

ואז נילחץ על הכפתור הירוק "Generate Token".

נעתיק את הAPI KEY שקיבלנו – אנו ניצטרך אותו כאשר נגדיר את הJOB בJenkins.
בתפריט הJenkins שלנו נלחץ על "Manage Jenkins"

ואז נלחץ על "Configure System"

נגלול למטה עד שנגיע ל"GitHub Servers" ונמלא את הפרטים.

נלחץ על "Add" שליד "Credentials" ובתפריט דרופדאון של הKIND נבחר SECRET KEY. בSECRET נדביק את הAPI KEY שקיבלנו. בID אני הזנתי github_key ובתיאור נזין מה שנוח לנו. במקרה שלי הזנתי GitHub Key

לאחר שסיימנו נלחץ על Add. ואז נסמן V ליד "Manage hooks". כמו כן בדרופ דאון של ה"Credentials" נסמן את הקי החדש שהוספנו שקראתי לו "GitHub Key"

נלחץ על הכפתור "Test Connection" כדי לוודא שהכל פועל כשורה, במיקרה שלי קיבלתי בחזרה: Credentials verified for user avivronen, rate limit: 4998

נלחץ על SAVE.

סיימנו את השלב הראשון, עכשיו שרת הJENKINS שלנו יכול לתקשר ישירות עם GITHUB וליצור ולנהל עבורנו WEBHOOKS.


שלב 2 – יצירת Jenkins Job

ניצור ג'וב חדש לפי השלבים שרשומים כאן, רק שהפעם, בגיטריפו נזין גיט ריפו שלנו שיש לנו הרשאות אליה, במיקרה שלי: "https://github.com/avivronen/php-docs-hello-world" (הריפו הזה זה פורק של הריפו שהשתמשנו בו במדריך הקודם) ובנוסף נסמן V ליד "GitHub hook trigger for GITScm polling". ונלחץ על SAVE.


שלב 3: הגדרת WEBHOOK בריפו שלנו.

נחזור לריפו שלנו בגיטאהב, נלחץ על SETTINGS, ואז נלחץ על Web hooks.
ושימו לב, שכבר עכשיו תוכלו לראות את הWEBHOOK שנוצר אוטומטית על ידי הJENKIN שלנו.
ברגע שתעשו COMMIT לריפו שלכם, הBUILD בגנקינס ירוץ אוטומטית. בהצלחה!


לקריאה נוספת:
1. איך להתקין Jenkins בCentOS7
2. יצירת Jenkins Job פשוט שמושך קבצים מGIT
3. על Jenkins וWebHooks – עדכון אוטומטי כאשר מתבצע שינוי בקוד בריפו שלנו
4. קצת על Jenkins Pipelines
5. התקנת DOCKER בJenkins

יצירת Jenkins Job פשוט שמושך קבצים מGIT


לקריאה נוספת:
1. איך להתקין Jenkins בCentOS7
2. יצירת Jenkins Job פשוט שמושך קבצים מGIT
3. על Jenkins וWebHooks – עדכון אוטומטי כאשר מתבצע שינוי בקוד בריפו שלנו
4. קצת על Jenkins Pipelines
5. התקנת DOCKER בJenkins


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

sudo yum install git

בתפריט הצדדי נבחר ב"New Item"

נבחר שם לJOB שלנו (במקרה שלי "demojob"), ובאפשרויות נבחר Freestyle Project

באפשרות Source Code Managment נבחר בGIT

ב "Repository URL" נזין את הכתובת

https://github.com/Azure-Samples/php-docs-hello-world.git

את הBranch נשאיר בMaster.

לאחר שסיימנו נלחץ על "Save".

אם נלחץ בתפריט הצדדי על "Build Now" , הJOB ירוץ ולאחר שיסיים במידה ונקליד את 2 הפקודות הבאות בשרת שלנו:


cd /var/lib/jenkins/workspace/demojob
ls -la

נוכל לראות שאכן הJOB משך בהצלחה את הקבצים מהGIT REPO והם נמצאים בתיקייה של הJOB.

total 16
drwxr-xr-x. 3 jenkins jenkins   85 Dec 23 11:32 .
drwxr-xr-x. 3 jenkins jenkins   21 Dec 23 11:32 ..
drwxr-xr-x. 8 jenkins jenkins  162 Dec 23 11:32 .git
-rw-r--r--. 1 jenkins jenkins  251 Dec 23 11:32 .gitignore
-rw-r--r--. 1 jenkins jenkins   28 Dec 23 11:32 index.php
-rw-r--r--. 1 jenkins jenkins 1183 Dec 23 11:32 LICENSE
-rw-r--r--. 1 jenkins jenkins  684 Dec 23 11:32 README.md

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

לקריאה נוספת:
1. איך להתקין Jenkins בCentOS7
2. יצירת Jenkins Job פשוט שמושך קבצים מGIT
3. על Jenkins וWebHooks – עדכון אוטומטי כאשר מתבצע שינוי בקוד בריפו שלנו
4. קצת על Jenkins Pipelines
5. התקנת DOCKER בJenkins

יצירת טריגר CodeCommit לAWS SNS על מנת לקבל התראות CodeCommit

SNS – הוא שירות שמנהל שליחת הודעות, לדוגמה הודעות SMS, מיילים וכו.

את הטריגרים אנחנו יכולים ליצור באמצעות הAWS Console וגם כמובן באמצעות הAWS Cli, בהתאם למה שנוח לנו ובהתאם למה שנכון למיקרה והם מאפשרים לנו בעצם לקבל התראות על פעולות שקרו בGit Repo שלנו.

על מנת שנוכל ליצור טריגר לSNS כדי לקבל התראות CodeCommit עלינו לעמוד בתנאים הבאים:
1. הריפו שלנו בCodeCommit חייב להיות ממוקם באותו Region של הSNS Topic שלנו.
2. חייב להיות לנו SNS Topic קיים, ואם אין, אז כמובן צריכים ליצור אותו.


לצורך ההדגמה, יצרתי בCodeCommit ריפו בשם "GitRepoWithTriggersDemo"

יצרנו גיט ריפו בשם GitRepoWithTriggersDemo לשם ההדגמה.

עכשיו ניצור SNS Topic אליו נחבר את הטריגר שלנו:
ניכנס לAWS SNS ונלחץ על הכפתור Create Topic

מסך AWS SNS
נכנס לAWS SNS ונילחץ על הכפתור Create Topic על מנת ליצור "נושא" חדש

נבחר שם לנושא שלנו, במיקרה שלי בחרתי את השם המקורי "MyDemoTopic", נגלול את המסך למטה ונלחץ על הכפתור הכתום "Create Topic"

יצירת AWS SNS Topic חדש
נבחר שם לנושא שלנו, במיקרה שלי בחרתי את השם המקורי "MyDemoTopic"

אחרי שיצרנו את הSNS Topic, אנו צריכים לבחור את ה"מנויים" לנושא שלנו, "מנויים" הם אלו שיקבלו למעשה את ההודעות שאנו נפרסם בTopic. בדוגמה שלנו אנו נגדיר מנויים מסוג "דואר אלקטרוני", באותה מידה יכלנו כמובן להגדיר "SMS" אם היינו רוצים שהם יקבלו הודעת SMS. כדי להגדיר אותם נלחץ בתפריט הצדדי על Subscriptions ואז נלחץ על הלחצן "Create Subscription"

יצירת Subscriptions לSNS Topic מסך ראשון
כדי להגדיר אותם נלחץ בתפריט הצדדי על Subscriptions ואז נלחץ על הלחצן "Create Subscription"

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

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

הודעת מייל תישלח לכתובת מייל שהזמנו שמבקשת מאיתנו לאשר את המינוי לAWS Notifications לSNS Topic.

אישור רישום בדואל לנושא SNS
הודעת מייל תישלח לכתובת מייל שהזמנו שמבקשת מאיתנו לאשר את המינוי לAWS Notifications לSNS Topic.

עכשיו ניכנס בחזרה למסך הRepo שלנו בCodeCommit, נלחץ על Settings, נבחר את הטאב Triggers ונלחץ על Create Trigger

הוספת טריגר לריפו שלנו בCodeCommit

נבחר שם לטריגר החדש שלנו, אני בחרתי "NewBranch", נסמן את סוג האירוע (EVENT) שאנו מעוניינים שהטריגר שלנו יאזין לו, במקרה שלנו "Create Branch Or Tag". בסוג השירות אליו אנו מעוניינים שהטריגר שלנו ייתחבר נבחר "Amazon SNS" – ואז נבחר את הSNS Topic הרלוונטי – במקרה שלנו קראנו לו MyDepoTopic

נלחץ על Test Trigger וניגש לתיבת הדואל שהגדרנו בשלב הקודם (למנוי) ונוודא שקיבלנו הודעת מייל. ואכן קיבלנו הודעה.

נלחץ על לחצן "Create Trigger" כדי לשמור ולהפעיל את הטריגר החדש שיצרנו.

הטריגר שלנו נוצר בהצלחה.

עכשיו, בכל פעם שניצור Branch חדש בריפו שלנו, כל מי שרשום לSNS Topic שמקשור לטריגר שלנו יקבל על כך הודעה.

קלי קלות!

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!


להמשיך לקרוא יצירת טריגר CodeCommit לAWS SNS על מנת לקבל התראות CodeCommit

מה הם טריגרים לAWS CodeCommit?

הטריגרים בCodeCommit הם למעשה הייתרון המשמעותית ביותר לשימוש בCodeCommit לניהול הקוד שלנו לעומת שירותים כגון GitHub, GitLab, BitBucket וכו.

טריגרים מאפשרים לנו לבצע פעולות בצורה אוטומטיות כאשר קרה EVENT מסויים בקוד ריפו שלנו ולמעשה הם מופעלים בתגובה לאירועים שקורים בקוד שלנו. לדוגמה, כאשר מישהו דחף (GIT PUSH) שינויים לקוד, או כאשר נוצר(או נמחק) Branch (או (GIT TAG) חדש ועוד נוכל אנחנו והצוות שלנו או כל מי שנירצה לקבל על כך התראה.

דוגמאות:

* יצירת BRANCH חדש יכולה להפעיל טריגר SNS topic על מנת להודיע לכל האנשים הרלוונטיים בצוות שלנו שנוצר Branch חדש כדי שהחברים שלנו יידעו שכדאי להם לעשות git pull למחשב הפיתוח שלהם.

שירותים לדוגמה שהטריגרים יכולים להפעיל עבורנו:

* פונקציות למבדה (Lambada Functions) – וואו, כאן ניתן לעשות כבר דברים מדהימים!
* SNS – AWS Simple Notification Service (שליחת הודעה בדואל, SMS וכו), אחד הייתרונות בחיבור לSNS הוא שזה מאפשר לנו להתחבר למעשה לכל השירותים אליהם SNS מתחבר כמו AWS SQS לדוגמה (Aws Simple Queue Service)


להמשיך לקרוא מה הם טריגרים לAWS CodeCommit?

העברת GIT REPO מGitHub לCodeCommit, הכיצד??

העברת REPO מGitHub ל AWS CodeCommit בקלי קלות.

במידה ויש לנו כבר GIT REPO באחד מהספקים הפופולארים כמו GitHub,GitLab,BitBucket וכו ואנו מעוניינים להעביר את ניהול הקוד לCodeCommit,
AWS מאפשרים לנו מספר אפשרויות:

1. העברת כל הREPO שלנו
2. העברת רק חלק מהBRANCHES
3. אנו יכולים להתחיל בהעברת רק חלק מהBRANCES ולאחר מכן להעביר את כל הREPO במידה ונירצה (הגירה בשלבים).

שימו לב! במידה וגודל הREPO שלנו גדול מ2GB,או שהREPO שלנו מכיל קבצים גדולים שלא ניתן לכווץ אותם (COMPRESS) בצורה טובה, ההמלצה היא להגר בשלבים ולא בבת אחת.


השלבים להעתקת ריפו מGITHUB לAWS CodeCommit

  1. ניצור משתמש בAWS עם הרשאות מתאימות ל CodeCommit
  2. נעתיק (CLONE) את הREPO שאנו רוצים להעביר מGITHUB למחשב שלנו.
  3. ניצור REPO חדש בCodeCommit דרך הAWS CLI
  4. ניצור למשתמש שלנו בAWS שם משתמש וסיסמא לCodeCommit
  5. נדחוף את הREPO שלנו מהמחשב לREPO בCodeCommit.

על מנת לעבוד עם CodeCommit יש ליצור משתמש בAWS עם ההרשאות המתאימות.

שימו לב, על מנת לעבוד עם CodeCommit יש ליצור משתמש בAWS עם ההרשאות המתאימות.

העתקת הREPO שלנו מGITHUB למחשב

למטרות הדגמה, עשיתי FORK בGITHUB שלי לרפו נחמד של Design Patterns בPHP בכתובת: https://github.com/avivronen/DesignPatternsPHP שאותו אעביר לCodeCommit.

השלב הבא הוא לבצע CLONE לREPO שאנו רוצים להעביר מGitHub לCodeCommit למחשב שלנו, אני כבר עשיתי את זה.

git clone --mirror <repourl> <mylocaltempdir>

החליפו את <repourl> בכתובת הריפו שלכם בGitHub
ואת <mylocaltempdir> במיקום התיקייה במחשב שלכם שאליה אתם מעוניינים להוריד את הREPO.

כפי שניתן לראות כרגע במחשב קיימת לי REPO בשם DesignPatternsPHP


יצירת REPO חדש בCodeCommit אליה נעתיק את הREPO מGITHUB

לאחר שיצרנו CLONE של הREPO שאנו רוצים להעביר במחשב שלנו, אנחנו ניצור REPO חדש בCodeCommit באמצעות הAWS CLI (אם טרם הגדרת את הAWS CLI במחשב שלכם, ליחצו כאן להסבר איך עושים את זה) על ידי הפקודה הבאה:

aws codecommit create-repository --repository-name avivtest --repository-description "aviv"

שם הריפו שבחרתי: avivtest
התיאור: aviv
התשובה שאנו אמורים לקבל צריכה להיות דומה למה שקיבלתי:

נוכל לוודא את זה על ידי כניסה לCodeCommit דרך ממשק AWS ושם ניראה את הREPO החדש שיצרנו.


יצירת שם משתמש וסיסמא למשתמש שלנו בAWS לCodeCommit

בנוסף, ניצור למשתמש שלנו בAWS שם משתמש וסיסמא לCodeCommit. לא לשכוח לתת למשתמש שלנו הרשאות לCodeCommit.
נלחץ על IAM, ושם ניראה את רשימת המשתמשים הקיימים, ונלחץ על המשתמש שלנו, במיקרה שלי שם המשתמש הוא codecommit.

נלחץ על Security Credentials

ונגלול למטה עד לחלק של "HTTPS Git credentials for AWS CodeCommit" ונלחץ על "Generate"

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


דחיפת הREPO מהמחשב שלנו לREPO החדש בCodeCommit

עכשיו אנחנו צריכים לדחוף את הREPO מהמחשב שלנו לREPO שיצרנו בCodeCommit.

ניכנס לתיקייה בה ממוקמת הREPO שהורדנו למחשב. במקרה שלי שם התיקייה הוא DesignPatternsPHP

cd DesignPatternsPHP

בשביל לדחוף את הREPO מהמחשב לREPO החדש שיצרנו בAWS נקליט את הפקודה הבאה,
נתבקש להזין את שם המשתמש והסיסמא שיצרנו בשלב הקודם.

git push https://git-codecommit.us-east-1.amazonaws.com/v1/repos/avivtest --all

כאשר https://git-codecommit.us-east-1.amazonaws.com/v1/repos/avivtest
זאת הכתובת של הREPO שלי ב CodeCommit.


כדי לדעת מה הכתובת של הREPO שלכם בCodeCommit ניתן להיכנס למסך הREPOS של CodeCommit, ושם נלחץ על HTTPS ליד שם הREPO שלנו, זה יעתיק לנו את הכתובת.

זהו! ככה פשוט, עכשיו כשניכנס דרך AWS לREPO שלנו בCodeCommit נוכל לראות שהREPO שלנו כבר הועתקה לשם.
עכשיו הREPO שלנו יושב בCodeCommit ונוכל להממשק באמצעות לשלל שירותי ה CI/CD של AWS בקלי קלות.


מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

איך להתקין GIT בשרת אובונטו (Debian)

שלב ראשון, נריץ את הפקודה

sudo apt-get update && apt-get upgrade

אנו זקוקים להרשאות ROOT לכן נכתוב sudo בהתחלה, במידה ונתבקש להזין סיסמא – יש להזין אותה ולאשר. במידה וקיימים עדכונים נלחץ y על מנת להתקין אותם.

לאחר מכן נריץ את הפקודה

sudo apt-get install git

ונענה y להתקנה.

sudo apt-get install git

נוודא את ההתקנה ואת הגירסה שהותקנה על ידי הקלדת הפקודה:

git version
וזהו, ככה פשוט!

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

לאתר גיט: https://git-scm.com/download/linux

להמשיך לקרוא איך להתקין GIT בשרת אובונטו (Debian)

איך להתקין GIT בשרת CentOS6

איך להתקין GIT בשרת CentOs6

כל הפעולות דורשות הרשאת ROOT, לכן נוסיף sudo בהתחלה.
השלב הראשון , לפני התקנה של כל סיפרייה הוא עדכונים!

sudo yum update && sudo yum upgrade

לאחר מכן על מנת להתקין את GIT נריץ את הפקודה:

sudo yum install git

ונלחץ y לאשר את ההתקנה.

לבסוף נוודה שההתקנה בוצעה בהצלחה על ידי הפקודה

git help

ככה קל!

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!


קריאה נוספת