שלבו Git & Jenkins לתסריטים מתוזמנים ב-PowerShell

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

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

התפשטות סקריפטים של PowerShell: זה לא עובד

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

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

  • A domain controller ran all of the Active Directory scripts.
  • שרת Exchange הריץ את כל הסקריפטים של Exchange.
  • A member server ran all networking team scripts.
  • A member server ran all of the database scripts for the DBAs.
  • A member server ran all of the security team’s scripts.
  • …וכן הלאה

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

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

היה קל לכולם להיות מרוצים עם המצב הזה. לשפר את המערכת הזו לא היה בראש רשימת העדיפויות.

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

וכאן נכנסת ג'נקינס.

למה ג'נקינס?

מתוך כל האפשרויות לקביעת תזמונים והפעלת סקריפטים ב-PowerShell, למה לבחור בג'נקינס? שימוש בשרת Jenkins להפעלת סקריפטים ב-PowerShell מספק רבים יתרונות. הנה כמה נקודות עיקריות:

שליטה טובה

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

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

קלות בתזמון

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

שליטה בגרסאות

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

יומן מאוחד

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

דרישות מוקדמות

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

התקנת התוסף ל-PowerShell

כדי להריץ סקריפטים של PowerShell עם Jenkins, עליך להתקין את התוסף ל-PowerShell. כדי לעשות זאת, בדף הראשי:

  1. לחץ על נהל את Jenkins ואז על נהל תוספים.
  2. לחץ על לשונית זמינים.
  3. בצד ימין של המסך, הקלד powershell בתיבת סנן. אתה אמור לראות את תוסף ה-PowerShell מופיע כפי שמוצג למטה.
Looking for the PowerShell extension

4. בחר בתיבת הסימון התקן ולחץ על התקן בלעדי הפעלה מחדש.

5.  התקנת התוסף של PowerShell תיצור אפשרות לשלב בניית Windows PowerShell כאשר אתה מספק את תסריט ה-PowerShell להרצה מעט מאוחר יותר.

יצירת עבודה

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

  1. לאחר התחברות ל-Jenkins, לחץ על פריט חדש בפינה הימנית העליונה.
New Item menu option

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

Creating a new Jenkins project

3.  תן לעבודה את השם Hello World ולחץ על אישור

Using Hello World for the project name

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

Source Code Management option

5.  כאשר אתה לוחץ על Git, עתה תראה אפשרות לשאול אותך על פרטי מאגר Git שלך. זהו המאגר Git שמכיל את תסריטי ה-PowerShell שלך.

Setting the Git repo

למטה מפורט פירוט של כל שדה:

  • כתובת המאגר URL – הכתובת שמצביעה על מאגר ה-Git. ב-TFS, לדוגמה, הכתובת יכולה להיראות כמו זו: *http://SERVERNAME:8080/tfs//Messaging/_git/Dynamic Distro List*
  • פרטי הכניסה – שם משתמש/סיסמה שיש לו גישה למאגר. אם אין לך כבר פרטי כניסה שהוגדרו, ניתן ליצור חדש על ידי לחיצה על הוסף
  • שם – ניתן להשאיר ריק.
  • Refspec – ניתן להשאיר ריק.
  • Branch Specifier – מאפשר לך לבחור איזה סניף תרצה שהעבודה תשתמש בו. כברירת מחדל, הוא יושף את הסניף master, אך אם יש לך סניף ניסיון אחר שתרצה להשתמש בו, ניתן לציין זאת כאן.

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

הוספת שלב בניית PowerShell של Windows

אולי יש לך סקריפט בשורש של סניף ה-master של מאגר ה-Git שלך בשם Hello World.ps1. בתוך הסקריפט הזה, יש לך שורה אחת:

Write-Host "Hello World, I'm a Jenkins build!"

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

ג'נקינס מאפשר לך לציין מספר שלבי בנייה שונים לכל עבודה. לצורך הזה, עליך להוסיף שלב בניית PowerShell של Windows. כדי לעשות זאת, במסך התצורה של העבודה:

  1. לחץ על הוסף שלב בנייה ובחר PowerShell של Windows.
Windows PowerShell Build step

2. בתוך תיבת הפקודה Command, dot source את סקריפט ה-PowerShell שלך שנמצא בריפו של Git כמצוין למטה. ניתן לראות שאנו משתמשים ב-PowerShell קבוע סביבה בשם WORKSPACE. משתנה זה מייצג את התיקיה הנוכחית בה נמצאת הספרייה הראשית של ריפו Git.

Running the Hello World.ps1 script

3.  כעת לחץ על שמור כדי לשמור את העבודה.

עכשיו יש לך עבודה מוגדרת להפעלת סקריפט PowerShell מריפו Git!

ביצוע סקריפט ה-PowerShell

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

  1. ודא שאתה נמצא במסך העבודה הראשי. אם השתמשת בשם Hello World לעבודה זו, ה-URL ברירת המחדל יהיה http://localhost:8080/job/Hello world/.
  2. במסך העבודה הראשי, לחץ על בנה כעת בצד שמאל כפי שמוצג למטה.
Running the build

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

4.  כדי לראות את התוצאות, לחץ על הסימן הירוק ליד הבנייה.

Inspecting build results

אם הכל התרחש כמתוכנן, תראה משהו דומה למה שמוצג למטה בפלט שלך:

Build log results

לוחות זמנים ומפעילים

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

Available build triggers

אלו האפשרויות שלך להפעלת עבודה בלי לדרוש ממך ללחוץ על Build Now ב-Jenkins.

יצירת לוח זמנים

יש מספר אפשרויות שונות ליצירת מפעילים מ-. בדוגמה זו, נשאיר אותה פשוטה.

  1. בחר Build periodically. מפעיל זה מאפשר לך לתזמן עבודות באמצעות תחביר תזמון דומה ל-cron.

הגדר את העבודה לרוץ ב-7:30 בבוקר בימי שני, רביעי ושישי כפי שמוצג למטה.

Setting schedule to 7:30AM MWF

שמור את השינויים וחכה.

כאשר התאריך והשעה המוקצים מתרחשים, תראה את התסריט רץ כפי שרצית תחת Build History.

Build running on schedule

יש לך כעת תסריט PowerShell מתוזמן ב-Jenkins שירץ במרווחי זמן קבועים.

קריאה נוספת

Source:
https://adamtheautomator.com/powershell-jenkins/