בזמן האחרון מצאתי את עצמי משתמש בכלי אוטומציה עוצמתי שנקרא Jenkins. Jenkins הוא שרת אוטומציה בקוד פתוח שמטרתו לשפר את תהליכי הפיתוח והבדיקה באמצעות CI/CD . מדובר בכלי חיוני עבור צוותי פיתוח שמעוניינים להבטיח שהקוד שלהם ישולב, ייבנה וייבדק בצורה אוטומטית, מה שמאפשר להימנע מבעיות ואינטגרציות מאוחרות ולהגביר את היעילות והאמינות של תהליכי הפיתוח. במאמר זה, נלמד כיצד להתקין ולהגדיר את Jenkins, ליצור תהליכי אוטומציה ולהפיק את המירב מהיכולות המרשימות שלו.
אז מה זה בעצם Jenkins?
Jenkins הוא שרת אוטומציה בקוד פתוח שנועד לתהליכי CI/CD – (Continuous Integration) (Continuous Delivery) של תוכנה. הוא מאפשר למפתחים לשלב שינויים בקוד באופן תדיר ולהפוך את תהליך הבניה והבדיקה לאוטומטי.
התקנה והגדרה של Jenkins
השלב הראשון בעבודה עם Jenkins הוא התקנתו והגדרתו. ניתן להתקין Jenkins על מערכות הפעלה שונות כמו Windows, macOS ו-Linux. במדריך זה נעסוק בהתקנה על מערכת הפעלה Ubuntu.
התקנה על Ubuntu
כדי להתקין Jenkins על Ubuntu, יש להפעיל את הפקודות הבאות:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
לאחר ההתקנה, ניתן לגשת לממשק הניהול של Jenkins דרך הדפדפן בכתובת http://localhost:8080
.
התקנה על Windows
כדי להתקין Jenkins על מערכת ההפעלה Windows, יש לבצע את הצעדים הבאים:
הורדת Jenkins
תחילה, יש להוריד את חבילת ההתקנה של Jenkins עבור Windows מהאתר הרשמי. ניתן להוריד את הקובץ מהכתובת הבאה: Jenkins Windows Installer.
התקנה
לאחר ההורדה, יש להפעיל את קובץ ההתקנה ולהתחיל את תהליך ההתקנה. תהליך ההתקנה יוביל אתכם במספר שלבים:
- קבלת תנאי השימוש.
- בחירת תיקיית התקנה.
- בחירת רכיבים להתקנה (יש להשאיר את האפשרויות ברירת מחדל).
הגדרות ראשוניות
לאחר סיום ההתקנה, Jenkins יופעל אוטומטית ויופיע חלון דפדפן עם הכתובת המקומית של Jenkins: http://localhost:8080
. בכניסה ראשונה, תתבקשו להזין סיסמת מנהל מערכת הנמצאת בקובץ <נתיב_ההתקנה>\\.jenkins\\secrets\\initialAdminPassword
.
התקנת תוספים
לאחר הכנסת סיסמת המנהל, תתבקשו לבחור ולהתקין תוספים. ניתן לבחור באפשרות של "התקנת תוספים מומלצים".
יצירת משתמש מנהל
לאחר התקנת התוספים, תתבקשו ליצור משתמש מנהל חדש. יש למלא את הפרטים המבוקשים ולשמור.
לאחר סיום התהליך, Jenkins יהיה מוכן לשימוש וניתן להתחיל להגדיר פרויקטים וליצור תהליכי אוטומציה.
בשלב זה, יש לכם Jenkins פועל על Windows ומוכן לשימוש לפרויקטים שונים של שילוב רציף ומסירה רציפה.
הגדרת Jenkins ראשונית
בכניסה ראשונה לממשק הניהול, תידרשו להזין סיסמת מנהל מערכת הנמצאת בקובץ /var/lib/jenkins/secrets/initialAdminPassword
. לאחר מכן, תתבקשו להתקין תוספים מומלצים וליצור משתמש מנהל.
יצירת Job ראשון
לאחר הגדרת Jenkins, ניצור Job ראשון. Job ב-Jenkins הוא תהליך אוטומטי שיכול לכלול בניית קוד, הרצת בדיקות ועוד. נתחיל ביצירת Job פשוט לבדיקת יכולות הבניה.
יצירת Job מסוג Freestyle
כדי ליצור Job חדש, יש ללחוץ על "New Item" בממשק הניהול, לבחור בשם ל-Job ולבחור ב-Freestyle project. לאחר מכן, נגדיר את ה-Job לבנות את הקוד שלנו.
echo "Building the project"
# Here you can add commands to build your project, e.g., running a script, compiling code, etc.
echo "Build complete"
לאחר הגדרת הפקודות, נשמור את ה-Job ונריץ אותו ידנית כדי לבדוק את הפעולה.
התקנת תוספים
אחד היתרונות הגדולים של Jenkins הוא האפשרות להתקין תוספים המרחיבים את היכולות שלו. ניתן להתקין תוספים למגוון פעולות כמו שילוב עם מערכות ניהול קוד מקור, הרצת בדיקות אוטומטיות, פריסה אוטומטית ועוד.
התקנת תוסף Git
כדי להתקין את תוסף ה-Git, ניגש ל-Manage Jenkins -> Manage Plugins, נלחץ על Available ונחפש את Git Plugin. נתקין את התוסף ונאתחל את Jenkins במידת הצורך.
שילוב רציף (Continuous Integration)
שילוב רציף הוא תהליך שבו הקוד החדש משולב בפרויקט הקיים באופן רציף. Jenkins מאפשר לנו להגדיר תהליכי שילוב רציף שמריצים בדיקות על הקוד בכל פעם שמבוצעת פעולה מסוימת (כגון Push ל-Repository).
הגדרת Job לשילוב רציף
ניצור Job חדש שיריץ בדיקות על כל שינוי בקוד שלנו. נגדיר את ה-Job כך שירוץ בכל פעם שמתבצעת פעולה מסוימת ב-Git Repository.
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
// Add build steps here
}
}
stage('Test') {
steps {
echo 'Testing...'
// Add test steps here
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
// Add deploy steps here
}
}
}
}
נשמור את ה-Job ונגדיר את Git repository לשימוש.
מסירה רציפה (Continuous Delivery)
מסירה רציפה היא התהליך שבו הקוד מוכן לפריסה בכל זמן נתון. Jenkins מאפשר להגדיר תהליכי מסירה רציפה כך שהקוד יהיה תמיד במצב שניתן לפרוס אותו לסביבה חיה.
הגדרת Pipeline למסירה רציפה
ניצור Pipeline שיריץ תהליכי בנייה, בדיקה ופריסה אוטומטיים כדי להבטיח שהקוד שלנו תמיד במצב מוכן לפריסה.
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
// Add build steps here
}
}
stage('Test') {
steps {
echo 'Testing...'
// Add test steps here
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
// Add deploy steps here
}
}
}
}
נשמור את ה-Pipeline ונריץ אותו כדי לבדוק את התהליך המלא של מסירה רציפה.
ניהול תלויות וגרסאות
Jenkins מאפשר ניהול תלויות וגרסאות בקלות באמצעות תוספים וכלים שונים. ניתן לשלב כלים כמו Maven או Gradle לניהול תלויות בפרויקטים מבוססי Java, או npm לפרויקטים מבוססי JavaScript.
שימוש ב-Maven לניהול תלויות
כדי להשתמש ב-Maven לניהול תלויות בפרויקט, נתקין את תוסף ה-Maven ונגדיר אותו ב-Job שלנו.
pipeline {
agent any
tools {
maven 'Maven 3.6.3'
}
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
}
}
נשמור את ה-Job ונריץ אותו כדי לבדוק את ניהול התלויות באמצעות Maven.
דוחות ובקרה
Jenkins מאפשר יצירת דוחות ובקרה על תהליכי הבנייה, הבדיקה והפריסה. ניתן להפיק דוחות מפורטים על תוצאות הבדיקות, כיסוי קוד ועוד.
הפקת דוחות עם JUnit
כדי להפיק דוחות עם JUnit, נגדיר את ה-Job כך שישתמש ב-JUnit להפקת דוחות הבדיקה.
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'mvn test'
junit '**/target/surefire-reports/*.xml'
}
}
}
}
נשמור את ה-Job ונריץ אותו כדי לבדוק את הפקת הדוחות עם JUnit.
דוגמה ליישום פרויקט עם Jenkins
כדי להדגים את היכולות של Jenkins, ניצור פרויקט פשוט שמשלב קוד, בודק אותו ומפרסם את התוצאה. בפרויקט זה נשתמש ב-Jenkins לצורך בנייה ובדיקה של אפליקציית Node.js.
שלב ראשון: יצירת פרויקט ב-GitHub
נתחיל ביצירת מאגר (repository) חדש ב-GitHub עבור אפליקציית ה-Node.js שלנו. נוודא שהמאגר כולל קובץ package.json
וקובץ app.js
.
{
"name": "jenkins-demo",
"version": "1.0.0",
"description": "A simple Node.js app to demonstrate Jenkins",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"express": "^4.17.1"
}
}
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, Jenkins!');
});
app.listen(port, () => {
console.log(`App running at http://localhost:${port}`);
});
שלב שני: הגדרת Jenkins לבניית הפרויקט
לאחר שיצרנו את המאגר, נעבור ל-Jenkins וניצור Job חדש לבניית הפרויקט. נלחץ על "New Item" בממשק הניהול של Jenkins ונבחר בשם לפרויקט ולסוג Freestyle project.
הגדרת מקורות הקוד
נגדיר את Jenkins למשוך את הקוד ממאגר ה-GitHub שלנו. תחת "Source Code Management" נבחר ב-Git ונזין את כתובת המאגר.
https://github.com/username/jenkins-demo.git
הגדרת בנייה
תחת "Build" נבחר ב- "Execute shell" ונזין את הפקודות הבאות לבניית הפרויקט:
npm install
npm test
שלב שלישי: הפעלת ה-Job ובדיקת התוצאות
לאחר הגדרת ה-Job, נשמור ונריץ אותו ידנית כדי לבדוק את הפעולה. נוודא שהפרויקט נבנה בהצלחה ושהבדיקות רצות ללא שגיאות.
הגדרת טריגרים אוטומטיים
כדי להפוך את התהליך לאוטומטי, נגדיר טריגרים שיפעילו את ה-Job בכל פעם שמתבצע שינוי במאגר ה-GitHub. תחת "Build Triggers" נבחר באפשרות "GitHub hook trigger for GITScm polling".
סיכום
Jenkins הוא כלי עוצמתי לאוטומציה של תהליכי פיתוח תוכנה. הוא מאפשר שילוב רציף ומסירה רציפה של קוד, ומספק כלים לניהול תלויות, הפקת דוחות ובקרה. בעזרת Jenkins ניתן לשפר את יעילות תהליכי הפיתוח ולהבטיח שהקוד תמיד במצב מוכן לפריסה.
אם אתם מעוניינים ללמוד בצורה מעמיקה יותר אתם מוזמנים להתייעץ איתנו על קורס DevOps