הרצאה: CI/CD – Continuous Integration ו-Continuous Deployment¶
הקדמה – למה צריך CI/CD?¶
בעולם הפיתוח המודרני, בעיות נפוצות הן:
- שחרור גרסאות כבד ומסורבל
- טעויות בקוד שמגיעות לפרודקשן
- תלות בתהליכים ידניים ובלתי עקביים
CI/CD נותן פתרון:
אוטומציה מלאה של בדיקות, שילוב והפצת הקוד, כדי שכל שינוי בקוד יעבור בצורה בטוחה ומהירה לפרודקשן.
מה זה CI ו-CD?¶
1. Continuous Integration (CI)¶
- כל שינוי בקוד (commit) מתמזג אוטומטית לסניף מרכזי (main/master)
-
קוד נבדק אוטומטית באמצעות:
-
Build (קימפול/הרצה)
- Unit Tests
- Lint / Code style
-
היתרונות:
-
תקלות נתפסות מוקדם
- פחות בעיות בעת שילוב קוד של כמה מפתחים
- אחידות בסביבה
2. Continuous Deployment / Continuous Delivery (CD)¶
- Continuous Delivery: הקוד מוכן לפרודקשן בכל רגע, אבל ההפצה נעשית ידנית
- Continuous Deployment: כל שינוי שעבר בדיקות משוחרר לפרודקשן אוטומטית
איך CI/CD עובד – דוגמה¶
Developer → Push Code → CI Pipeline → Run Tests
↓
Build Docker Image
↓
Push to Registry
↓
CD Pipeline → Deploy to AWS
- בדיקות → מונעות קוד שבור לפרודקשן
- Build → מייצר גרסה אחידה
- Deploy → העלאה אוטומטית לסביבת staging/prod
כלים פופולריים ל-CI/CD¶
- GitHub Actions – CI/CD בתוך GitHub
- GitLab CI/CD – משולב עם GitLab
- Jenkins – כלי פתוח ומתקדם
- CircleCI / TravisCI – שירותים בענן
דוגמה בסיסית ל-GitHub Actions¶
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run Tests
run: pytest
- כל commit ל־main יפעיל את הפייפליין
- אם הבדיקות נכשלות → התהליך נעצר
- אם הבדיקות עוברות → אפשר להמשיך ל-CD
שימוש ב-CI/CD בפרויקט TRIP שלנו¶
דוגמה של Pipeline:¶
-
CI (Build & Test)
-
Build Docker image של FastAPI
- הרצת Unit Tests
-
בדיקת סגנון קוד / lint
-
CD (Deploy)
-
Push ל-Docker registry (ECR / DockerHub)
- Deploy ל-ECS / EC2
- עדכון Auto Scaling Group או Load Balancer
יתרונות CI/CD¶
- מהירות – שחרור גרסאות מהר
- איכות – בדיקות אוטומטיות מונעות תקלות
- אמינות – כל גרסה עקבית ומוכנה לפרודקשן
- שיתוף פעולה – כל המפתחים עובדים על אותו Pipeline
- גמישות – אפשר לייצר סביבות DEV/STAGE/PROD בקלות
Best Practices ל-CI/CD¶
- לבדוק כל commit – כל שינוי נבדק אוטומטית
- לשלב בדיקות אוטומטיות – unit tests, integration tests
- להשתמש ב-Docker / Containerization – תואם בין סביבות
- לשחרר גרסאות קטנות – יותר מהיר, פחות סיכון
- לנטר תמיד את הפייפליין – CloudWatch / Logs
סיכום¶
- CI/CD = אוטומציה של בדיקות, שילוב ושחרור קוד
- CI = בדיקות ואינטגרציה רציפה
- CD = הפצה רציפה (Delivery / Deployment)
- מאפשר צוותים לפתח מהר, לשחרר בטוח, ולתחזק מערכות ענן בצורה יציבה