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

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 کافیه! 👍

آینده: اگر پروژه دوم شروع شد، مجدداً ارزیابی کنید.