Files
peikarband/docs/REPOSITORY_STRATEGY.md
Ehsan.Asadi 5fed68fc54
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
chore: add repository strategy doc and helper scripts
- Add docs/REPOSITORY_STRATEGY.md for future reference
- Add build-base-image.sh for local base image build
- Add restore-files.sh for pipeline file management
- Restore correct pipeline file names
2025-12-30 21:56:58 +03:30

95 lines
2.2 KiB
Markdown

# Repository Strategy
## استراتژی فعلی: Single Repository ✅
همه چیز در یک repository: `peikarband/landing`
### مزایا:
- ساده و قابل مدیریت
- همه چیز در یک جا
- مناسب برای یک پروژه
### ساختار:
```
peikarband/landing/
├── .woodpecker.yml # Application pipeline
├── .woodpecker-base.yml # Base image pipeline
├── docker/
│ ├── Dockerfile # Application
│ └── Dockerfile.base # Base image
└── ...
```
---
## استراتژی آینده: Multi Repository (اختیاری)
اگر پروژه‌های بیشتری اضافه شد، می‌توانید base را جدا کنید.
### مراحل جداسازی:
#### 1. ایجاد Repository جدید
```bash
# Create new repo
mkdir peikarband-base-images
cd peikarband-base-images
git init
# Structure
mkdir -p python311-node20
```
#### 2. انتقال Base Files
```bash
# Copy base files
cp ../landing/docker/Dockerfile.base python311-node20/Dockerfile
cp ../landing/.woodpecker-base.yml .woodpecker.yml
```
#### 3. Update Application Repository
در `peikarband/landing`:
```dockerfile
# docker/Dockerfile
ARG BASE_IMAGE=hub.peikarband.ir/peikarband/base:python311-node20
FROM ${BASE_IMAGE} AS builder
```
#### 4. Registry Organization
```
Registry Structure:
hub.peikarband.ir/
├── peikarband/base # Base images repo
│ ├── python311-node20:latest
│ └── python312-node21:latest
└── peikarband/landing # Application
└── latest
```
---
## زمان جداسازی
**جدا کنید وقتی:**
- ✅ 3+ پروژه از همان base استفاده می‌کنند
- ✅ تیم 5+ نفری دارید
- ✅ Base versioning پیچیده شد
- ✅ نیاز به CI/CD مستقل برای base دارید
**جدا نکنید وقتی:**
- ❌ فقط یک پروژه دارید (فعلی)
- ❌ تیم کوچک است (1-3 نفر)
- ❌ Base خیلی تغییر نمی‌کند
---
## توصیه
**الان:** یک repository کافیه! 👍
**آینده:** اگر پروژه دوم شروع شد، مجدداً ارزیابی کنید.