Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- 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
2.2 KiB
2.2 KiB
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 جدید
# Create new repo
mkdir peikarband-base-images
cd peikarband-base-images
git init
# Structure
mkdir -p python311-node20
2. انتقال Base Files
# Copy base files
cp ../landing/docker/Dockerfile.base python311-node20/Dockerfile
cp ../landing/.woodpecker-base.yml .woodpecker.yml
3. Update Application Repository
در peikarband/landing:
# 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 کافیه! 👍
آینده: اگر پروژه دوم شروع شد، مجدداً ارزیابی کنید.