לדלג לתוכן

הרצאה: 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:

  1. CI (Build & Test)

  2. Build Docker image של FastAPI

  3. הרצת Unit Tests
  4. בדיקת סגנון קוד / lint

  5. CD (Deploy)

  6. Push ל-Docker registry (ECR / DockerHub)

  7. Deploy ל-ECS / EC2
  8. עדכון Auto Scaling Group או Load Balancer

יתרונות CI/CD

  • מהירות – שחרור גרסאות מהר
  • איכות – בדיקות אוטומטיות מונעות תקלות
  • אמינות – כל גרסה עקבית ומוכנה לפרודקשן
  • שיתוף פעולה – כל המפתחים עובדים על אותו Pipeline
  • גמישות – אפשר לייצר סביבות DEV/STAGE/PROD בקלות

Best Practices ל-CI/CD

  1. לבדוק כל commit – כל שינוי נבדק אוטומטית
  2. לשלב בדיקות אוטומטיות – unit tests, integration tests
  3. להשתמש ב-Docker / Containerization – תואם בין סביבות
  4. לשחרר גרסאות קטנות – יותר מהיר, פחות סיכון
  5. לנטר תמיד את הפייפליין – CloudWatch / Logs

סיכום

  • CI/CD = אוטומציה של בדיקות, שילוב ושחרור קוד
  • CI = בדיקות ואינטגרציה רציפה
  • CD = הפצה רציפה (Delivery / Deployment)
  • מאפשר צוותים לפתח מהר, לשחרר בטוח, ולתחזק מערכות ענן בצורה יציבה