אם יש לך ולצוות שלך יותר מדי סקריפטים של 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. לכן, יהיה עליך לקבל כמה דברים כדי לעקוב.
- A running Jenkins server
- Git מותקן בשרת Jenkins שלך או סוכן בנייה
- A Git repo set up containing your PowerShell scripts (Be sure you know the repo URL)
- תוסף Git של Jenkins
התקנת התוסף ל-PowerShell
כדי להריץ סקריפטים של PowerShell עם Jenkins, עליך להתקין את התוסף ל-PowerShell. כדי לעשות זאת, בדף הראשי:
- לחץ על נהל את Jenkins ואז על נהל תוספים.
- לחץ על לשונית זמינים.
- בצד ימין של המסך, הקלד powershell בתיבת סנן. אתה אמור לראות את תוסף ה-PowerShell מופיע כפי שמוצג למטה.

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

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

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

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

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

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

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

3. כעת לחץ על שמור כדי לשמור את העבודה.
עכשיו יש לך עבודה מוגדרת להפעלת סקריפט PowerShell מריפו Git!
ביצוע סקריפט ה-PowerShell
כעת שיש לך עבודה שנוצרה, הפעל אותה ובדוק את הפלט.
- ודא שאתה נמצא במסך העבודה הראשי. אם השתמשת בשם Hello World לעבודה זו, ה-URL ברירת המחדל יהיה http://localhost:8080/job/Hello world/.
- במסך העבודה הראשי, לחץ על בנה כעת בצד שמאל כפי שמוצג למטה.

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

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

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

אלו האפשרויות שלך להפעלת עבודה בלי לדרוש ממך ללחוץ על Build Now ב-Jenkins.
יצירת לוח זמנים
יש מספר אפשרויות שונות ליצירת מפעילים מ-. בדוגמה זו, נשאיר אותה פשוטה.
- בחר Build periodically. מפעיל זה מאפשר לך לתזמן עבודות באמצעות תחביר תזמון דומה ל-cron.
הגדר את העבודה לרוץ ב-7:30 בבוקר בימי שני, רביעי ושישי כפי שמוצג למטה.

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

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