📋 פרטי המעבדה

פרט פירוט
פרויקט ci-lab-api (Node.js + TypeScript)
שעות עבודה 18:30 – 22:00
נושאים Workflows · Events · Artifacts
עבודה יחידים
הגשה קישור ל־Repo ב־GitHub

📦 מבנה הפרויקט

https://github.com/lirone-iitc/github-actions-day1-lab

קוד הבסיס יינתן לך — עשה Fork ו־Clone. אל תשנה את קוד האפליקציה. המשימה שלך היא לבנות את ה־Pipeline בלבד.

ci-lab-api/
├── src/
│   ├── config/index.ts        ← env vars עם typing מלא
│   ├── utils/logger.ts        ← Winston (JSON בprod, צבעוני בdev)
│   ├── middleware/
│   │   ├── requestLogger.ts   ← לוג כל בקשה + משך זמן
│   │   ├── errorHandler.ts    ← טיפול מרכזי בשגיאות
│   │   └── notFound.ts        ← תפיסת routes לא קיימים
│   ├── routes/
│   │   ├── health.ts          ← GET /health
│   │   └── items.ts           ← GET + POST /api/items
│   ├── app.ts                 ← הרכבת ה־Express app
│   └── index.ts               ← Graceful shutdown עם SIGTERM
├── test/
│   ├── health.test.ts         ← 2 טסטים
│   └── items.test.ts          ← 8 טסטים
├── package.json
├── tsconfig.json
├── jest.config.js
└── .eslintrc.js

Scripts זמינים:

npm install           # התקנת תלויות
npm run dev           # הרצה מקומית עם ts-node
npm run typecheck     # בדיקת TypeScript בלבד
npm run lint          # ESLint
npm test              # Jest + coverage
npm run test:ci       # Jest עם JUnit reporter (לCI)
npm run build         # קומפילציה ל־dist/

Endpoints:

Method Path תיאור
GET /health status, version, uptime, timestamp
GET /api/items רשימת כל הפריטים
GET /api/items/:id פריט לפי ID — 404 אם לא קיים
POST /api/items יצירת פריט — 400 אם חסר name

⏱️ לוח זמנים מומלץ

שעה משך שלב מה עושים
18:30 – 18:45 15 דק׳ שלב 0 הכנה — Fork, Clone, npm install, הרצת טסטים מקומית
18:45 – 19:30 45 דק׳ שלב 1 Workflow בסיסי
19:30 – 20:15 45 דק׳ שלב 2 3 Jobs עם תלויות
20:15 – 21:00 45 דק׳ שלב 3 Events וטריגרים
21:00 – 21:30 30 דק׳ שלב 4 Artifacts
21:30 – 22:00 30 דק׳ בונוס אתגר פתוח / סיום והגשה

🔰 שלב 0 — הכנה (15 דק׳)

  1. עשה Fork ל־Repo שקיבלת ל־GitHub האישי שלך
  2. עשה git clone למחשב המקומי
  3. הרץ npm install