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