| פרט | פירוט |
|---|---|
| פרויקט | 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 דק׳ | בונוס | אתגר פתוח / סיום והגשה |
git clone למחשב המקומיnpm install