237 lines
5.6 KiB
Markdown
237 lines
5.6 KiB
Markdown
|
|
# اسکریپتهای مدیریت ماژولها
|
||
|
|
|
||
|
|
این ریپو چند اسکریپت کمکی برای مدیریت ماژولها، سابماژول `Schemas` و اجرای Docker دارد. در این فایل، کاربرد هر اسکریپت و نحوه استفاده از آن به فارسی توضیح داده شده است.
|
||
|
|
|
||
|
|
## 1) افزودن همه ماژولها بهصورت submodule
|
||
|
|
|
||
|
|
فایل:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_submodules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
کار این اسکریپت:
|
||
|
|
|
||
|
|
- ماژولهای `Ai`، `SensorHub`، `Backend`، `Accsess` و `Schemas` را بهصورت submodule اضافه میکند
|
||
|
|
- branch پیشفرض روی `develop` است
|
||
|
|
- اگر submodule از قبل ثبت شده باشد، همان ماژول را skip میکند
|
||
|
|
|
||
|
|
استفاده:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_submodules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
اگر میخواهید `git submodule add` با `--force` اجرا شود:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_submodules.sh --force
|
||
|
|
```
|
||
|
|
|
||
|
|
## 2) افزودن `Schemas` به پروژهها
|
||
|
|
|
||
|
|
فایل:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_schemas_submodule.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
کار این اسکریپت:
|
||
|
|
|
||
|
|
- سابماژول `Schemas` را داخل پروژههای `Ai`، `Backend` و `SensorHub` اضافه میکند
|
||
|
|
- اگر `Schemas` از قبل اضافه شده باشد، آن پروژه را رد میکند
|
||
|
|
- اگر پوشه `Schemas` از قبل وجود داشته باشد، چیزی را overwrite نمیکند
|
||
|
|
|
||
|
|
استفاده:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_schemas_submodule.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
اگر میخواهید `git submodule add` با `--force` اجرا شود:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_schemas_submodule.sh --force
|
||
|
|
```
|
||
|
|
|
||
|
|
فقط برای بعضی پروژهها:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_schemas_submodule.sh Ai Backend
|
||
|
|
```
|
||
|
|
|
||
|
|
ترکیب با `--force`:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./add_schemas_submodule.sh --force Ai Backend
|
||
|
|
```
|
||
|
|
|
||
|
|
اگر آدرس ریپوی `Schemas` تغییر کرد:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
SCHEMAS_REPO_URL="ssh://git@host:port/path/Schemas.git" ./add_schemas_submodule.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
## 3) pull گرفتن از `Schemas` داخل پروژهها
|
||
|
|
|
||
|
|
فایل:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./pull_schemas_submodule.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
کار این اسکریپت:
|
||
|
|
|
||
|
|
- داخل `Ai`، `Backend` و `SensorHub` میرود
|
||
|
|
- اگر `Schemas` بهعنوان submodule وجود داشته باشد، روی آن `git pull --ff-only` اجرا میکند
|
||
|
|
- اگر submodule هنوز initialize نشده باشد، آن پروژه را رد میکند
|
||
|
|
|
||
|
|
استفاده:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./pull_schemas_submodule.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
فقط برای بعضی پروژهها:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./pull_schemas_submodule.sh Ai SensorHub
|
||
|
|
```
|
||
|
|
|
||
|
|
## 4) pull گرفتن از همه ماژولها
|
||
|
|
|
||
|
|
فایل:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./pull_all_modules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
کار این اسکریپت:
|
||
|
|
|
||
|
|
- روی ماژولهای اصلی `Accsess`، `Ai`، `Backend`، `Schemas` و `SensorHub` دستور `git pull --ff-only` اجرا میکند
|
||
|
|
- اگر داخل هر ماژول submodule وجود داشته باشد:
|
||
|
|
- ابتدا `submodule update --init --recursive` اجرا میکند
|
||
|
|
- سپس روی submoduleهای داخلی هم `git pull --ff-only` اجرا میکند
|
||
|
|
|
||
|
|
استفاده:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./pull_all_modules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
فقط برای چند ماژول مشخص:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./pull_all_modules.sh Ai Backend
|
||
|
|
```
|
||
|
|
|
||
|
|
## 5) اجرای Docker برای ماژولها
|
||
|
|
|
||
|
|
فایل:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./run_docker_modules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
کار این اسکریپت:
|
||
|
|
|
||
|
|
- همه پوشههای داخل ریشه پروژه را بررسی میکند
|
||
|
|
- هر پوشهای که فایل Docker Compose داشته باشد اجرا میشود
|
||
|
|
- این فایلها پشتیبانی میشوند:
|
||
|
|
- `docker-compose.yaml`
|
||
|
|
- `docker-compose.yml`
|
||
|
|
- `compose.yaml`
|
||
|
|
- `compose.yml`
|
||
|
|
- اجرای پیشفرض به شکل detached است:
|
||
|
|
- `docker compose up -d`
|
||
|
|
|
||
|
|
استفاده:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./run_docker_modules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
فقط برای چند ماژول مشخص:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./run_docker_modules.sh Ai Backend
|
||
|
|
```
|
||
|
|
|
||
|
|
### اجرای Docker با build
|
||
|
|
|
||
|
|
اگر بخواهید قبل از اجرا build هم انجام شود، از فلگ `--build` استفاده کنید:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./run_docker_modules.sh --build
|
||
|
|
```
|
||
|
|
|
||
|
|
برای چند ماژول مشخص همراه با build:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./run_docker_modules.sh --build Ai SensorHub
|
||
|
|
```
|
||
|
|
|
||
|
|
### راهنمای اسکریپت Docker
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./run_docker_modules.sh --help
|
||
|
|
```
|
||
|
|
|
||
|
|
## 6) bootstrap کامل ماژولها
|
||
|
|
|
||
|
|
فایل:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./bootstrap_modules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
کار این اسکریپت:
|
||
|
|
|
||
|
|
- در step 1 اسکریپت `add_submodules.sh` را اجرا میکند
|
||
|
|
- در step 2 اسکریپت `add_schemas_submodule.sh` را اجرا میکند
|
||
|
|
- در step 3 اسکریپت `run_docker_modules.sh` را اجرا میکند
|
||
|
|
- میتواند `--force` را به اسکریپتهای add و `--build` را به Docker پاس بدهد
|
||
|
|
|
||
|
|
استفاده:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./bootstrap_modules.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
اجرا فقط تا step 2:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./bootstrap_modules.sh --step 2
|
||
|
|
```
|
||
|
|
|
||
|
|
اجرا با `--force`:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./bootstrap_modules.sh --force
|
||
|
|
```
|
||
|
|
|
||
|
|
اجرا با `--force` فقط تا step 2:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./bootstrap_modules.sh --force --step 2
|
||
|
|
```
|
||
|
|
|
||
|
|
اجرا با build برای Docker:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./bootstrap_modules.sh --build
|
||
|
|
```
|
||
|
|
|
||
|
|
## نکات مهم
|
||
|
|
|
||
|
|
- تمام اسکریپتها طوری نوشته شدهاند که اگر مسیر موردنظر git repo نباشد یا فایل لازم را نداشته باشد، بهجای خطای مخرب، آن مورد را skip کنند
|
||
|
|
- در اسکریپتهای pull از `--ff-only` استفاده شده تا merge ناخواسته ایجاد نشود
|
||
|
|
- قبل از اجرا، مطمئن شوید اسکریپتها executable هستند:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
chmod +x add_schemas_submodule.sh
|
||
|
|
chmod +x pull_schemas_submodule.sh
|
||
|
|
chmod +x pull_all_modules.sh
|
||
|
|
chmod +x run_docker_modules.sh
|
||
|
|
```
|