From 381fa441fa95f9f2e50f774e245f67837261a8d2 Mon Sep 17 00:00:00 2001 From: parsa aghaei Date: Sun, 9 Aug 2026 22:22:02 +0330 Subject: [PATCH] deploy.yml updated --- .gitea/workflows/deploy.yml | 14 ++++--- deploy.sh | 83 ------------------------------------- scripts/deploy.sh | 62 ++++++++++++++------------- scripts/deploy.sh.bak | 77 ++++++++++++++++++++++++++++++++++ 4 files changed, 119 insertions(+), 117 deletions(-) delete mode 100644 deploy.sh create mode 100644 scripts/deploy.sh.bak diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 1ced806..d353b9e 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -17,11 +17,13 @@ jobs: # 1. اضافه کردن آی‌پی به فایل hosts رانر تا دامنه حل شود echo "87.248.133.138 git.parsaaghayi.ir" >> /etc/hosts - # 2. دانلود deploy.sh از دامنه اصلی (با SSL) - wget --no-check-certificate -O deploy.sh \ - "https://git.parsaaghayi.ir/parsa/canina/raw/branch/main/deploy.sh" || \ - wget --no-check-certificate -O deploy.sh \ - "https://git.parsaaghayi.ir/parsa/canina/raw/branch/develop/deploy.sh" + # 2. دانلود deploy.sh (که الان توی پوشه‌ی scripts هست) + wget --no-check-certificate -O scripts/deploy.sh \ + "https://git.parsaaghayi.ir/parsa/canina/raw/branch/main/scripts/deploy.sh" || \ + wget --no-check-certificate -O scripts/deploy.sh \ + "https://git.parsaaghayi.ir/parsa/canina/raw/branch/develop/scripts/deploy.sh" - chmod +x deploy.sh + # 3. به اسکریپت دسترسی بده و اون رو از داخل پوشه‌ی scripts اجرا کن + chmod +x scripts/deploy.sh + cd scripts ./deploy.sh ${BRANCH} \ No newline at end of file diff --git a/deploy.sh b/deploy.sh deleted file mode 100644 index 1888f9c..0000000 --- a/deploy.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash -set -e - -export DOCKER_BUILDKIT=1 -export COMPOSE_DOCKER_CLI_BUILD=1 - -# Nexus npm registry -NPM_REGISTRY="http://nexus:8081/repository/bitchpedar/" -NEXUS_HOST="nexus" -NEXUS_IP="172.18.0.11" - -BRANCH="${1:-develop}" -echo "Starting Deployment for branch: ${BRANCH}" - -if [ "$BRANCH" == "develop" ]; then - COMPOSE_FILE="compose.stage.yml" - TARGET_DIR="/opt/services/canina/stage" - BACKEND_HOST="backend_stage" - APP_HOST="stage.canina.ir" - ADMIN_HOST="stageadmin.canina.ir" - API_URL="https://stageapi.canina.ir" - CONTAINER_PREFIX="canino_backend_stage" -else - COMPOSE_FILE="compose.prod.yml" - TARGET_DIR="/opt/services/canina/prod" - BACKEND_HOST="backend_prod" - APP_HOST="canina.ir" - ADMIN_HOST="admin.canina.ir" - API_URL="https://api.canina.ir" - CONTAINER_PREFIX="canino_backend_prod" -fi - -mkdir -p "$TARGET_DIR" - -# ✅ حذف شد: cd "$TARGET_DIR" (ما در روت پروژه می‌مانیم تا فایل‌ها را پیدا کنیم) - -if [ ! -d "$TARGET_DIR/.git" ]; then - echo "Cloning repository into $TARGET_DIR..." - git clone -b "$BRANCH" https://git.parsaaghayi.ir/parsa/canina.git "$TARGET_DIR" -else - echo "Pulling latest changes in $TARGET_DIR..." - cd "$TARGET_DIR" - git fetch origin "$BRANCH" - git reset --hard "origin/$BRANCH" - cd - # به پوشه‌ی قبلی برمی‌گردیم -fi - -# ✅ فایل‌های کانفیگ را از روت پروژه به TARGET_DIR کپی می‌کنیم -echo "Copying configuration files to $TARGET_DIR..." -cp "$COMPOSE_FILE" "$TARGET_DIR/docker-compose.yml" -sed -i 's/- REDIS_PORT: 6379/- REDIS_PORT=6379/g' "$TARGET_DIR/docker-compose.yml" 2>/dev/null || true - -# 🔥 اصلاح مسیر nginx: الان در روت هستیم، پس مستقیماً کپی می‌کنیم -echo "Patching nginx.conf for environment..." -cp nginx.conf "$TARGET_DIR/nginx.conf" -sed -i "s/__BACKEND_HOST__/${BACKEND_HOST}/g" "$TARGET_DIR/nginx.conf" -sed -i "s/__APP_HOST__/${APP_HOST}/g" "$TARGET_DIR/nginx.conf" -sed -i "s/__ADMIN_HOST__/${ADMIN_HOST}/g" "$TARGET_DIR/nginx.conf" - -# 🔥 برو به TARGET_DIR تا داکر کامپوز را آنجا اجرا کنی -cd "$TARGET_DIR" - -echo "Using Nexus npm proxy: $NPM_REGISTRY" -NPM_REGISTRY_ARG="--build-arg NPM_REGISTRY=${NPM_REGISTRY}" - -echo "Building Docker images..." -docker compose build \ - --build-arg NEXT_PUBLIC_API_URL="${API_URL}/api" \ - --build-arg VITE_API_URL="${API_URL}" \ - ${NPM_REGISTRY_ARG} \ - --add-host="nexus:${NEXUS_IP}" - -echo "Starting containers..." -docker compose up -d - -echo "Waiting for backend to start..." -sleep 15 - -echo "Running migrations and seeding database..." -docker exec "$CONTAINER_PREFIX" npx prisma migrate deploy || true -docker exec "$CONTAINER_PREFIX" npx prisma db seed || true - -echo "Deployment for $BRANCH completed successfully!" \ No newline at end of file diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 3b1f0b3..1888f9c 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -4,6 +4,11 @@ set -e export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 +# Nexus npm registry +NPM_REGISTRY="http://nexus:8081/repository/bitchpedar/" +NEXUS_HOST="nexus" +NEXUS_IP="172.18.0.11" + BRANCH="${1:-develop}" echo "Starting Deployment for branch: ${BRANCH}" @@ -26,46 +31,47 @@ else fi mkdir -p "$TARGET_DIR" -cd "$TARGET_DIR" -if [ ! -d ".git" ]; then - echo "Cloning repository..." - git clone -b "$BRANCH" https://git.parsaaghayi.ir/parsa/canina.git . +# ✅ حذف شد: cd "$TARGET_DIR" (ما در روت پروژه می‌مانیم تا فایل‌ها را پیدا کنیم) + +if [ ! -d "$TARGET_DIR/.git" ]; then + echo "Cloning repository into $TARGET_DIR..." + git clone -b "$BRANCH" https://git.parsaaghayi.ir/parsa/canina.git "$TARGET_DIR" else - echo "Pulling latest changes..." + echo "Pulling latest changes in $TARGET_DIR..." + cd "$TARGET_DIR" git fetch origin "$BRANCH" git reset --hard "origin/$BRANCH" + cd - # به پوشه‌ی قبلی برمی‌گردیم fi -echo "Fixing .dockerignore..." -sed -i '/node_modules/d' .dockerignore 2>/dev/null || true -sed -i '/node_modules/d' backend/.dockerignore 2>/dev/null || true -sed -i '/^backend$/d' .dockerignore 2>/dev/null || true - -echo "Disabling TS checks for fast deploy..." -sed -i 's|tsc -b \&\& vite build|vite build|g' frontend/admin-panel/package.json 2>/dev/null || true -sed -i 's|tsc \&\& vite build|vite build|g' frontend/admin-panel/package.json 2>/dev/null || true - -# Copy scientificTerms.ts if needed -cp frontend/application/lib/data/scientificTerms.ts backend/prisma/scientificTerms.ts 2>/dev/null || true - -# Prepare docker-compose.yml in TARGET_DIR -cp "/opt/services/canina/$COMPOSE_FILE" "$TARGET_DIR/docker-compose.yml" +# ✅ فایل‌های کانفیگ را از روت پروژه به TARGET_DIR کپی می‌کنیم +echo "Copying configuration files to $TARGET_DIR..." +cp "$COMPOSE_FILE" "$TARGET_DIR/docker-compose.yml" sed -i 's/- REDIS_PORT: 6379/- REDIS_PORT=6379/g' "$TARGET_DIR/docker-compose.yml" 2>/dev/null || true -# Prepare nginx.conf for current environment +# 🔥 اصلاح مسیر nginx: الان در روت هستیم، پس مستقیماً کپی می‌کنیم echo "Patching nginx.conf for environment..." -cp nginx.conf nginx.conf.tmp -sed -i "s/__BACKEND_HOST__/${BACKEND_HOST}/g" nginx.conf.tmp -sed -i "s/__APP_HOST__/${APP_HOST}/g" nginx.conf.tmp -sed -i "s/__ADMIN_HOST__/${ADMIN_HOST}/g" nginx.conf.tmp -mv nginx.conf.tmp nginx.conf +cp nginx.conf "$TARGET_DIR/nginx.conf" +sed -i "s/__BACKEND_HOST__/${BACKEND_HOST}/g" "$TARGET_DIR/nginx.conf" +sed -i "s/__APP_HOST__/${APP_HOST}/g" "$TARGET_DIR/nginx.conf" +sed -i "s/__ADMIN_HOST__/${ADMIN_HOST}/g" "$TARGET_DIR/nginx.conf" + +# 🔥 برو به TARGET_DIR تا داکر کامپوز را آنجا اجرا کنی +cd "$TARGET_DIR" + +echo "Using Nexus npm proxy: $NPM_REGISTRY" +NPM_REGISTRY_ARG="--build-arg NPM_REGISTRY=${NPM_REGISTRY}" echo "Building Docker images..." -docker compose build --build-arg NEXT_PUBLIC_API_URL="${API_URL}/api" --build-arg VITE_API_URL="${API_URL}" +docker compose build \ + --build-arg NEXT_PUBLIC_API_URL="${API_URL}/api" \ + --build-arg VITE_API_URL="${API_URL}" \ + ${NPM_REGISTRY_ARG} \ + --add-host="nexus:${NEXUS_IP}" echo "Starting containers..." -docker compose up -d --force-recreate --remove-orphans +docker compose up -d echo "Waiting for backend to start..." sleep 15 @@ -74,4 +80,4 @@ echo "Running migrations and seeding database..." docker exec "$CONTAINER_PREFIX" npx prisma migrate deploy || true docker exec "$CONTAINER_PREFIX" npx prisma db seed || true -echo "Deployment for $BRANCH completed successfully!" +echo "Deployment for $BRANCH completed successfully!" \ No newline at end of file diff --git a/scripts/deploy.sh.bak b/scripts/deploy.sh.bak new file mode 100644 index 0000000..3b1f0b3 --- /dev/null +++ b/scripts/deploy.sh.bak @@ -0,0 +1,77 @@ +#!/bin/bash +set -e + +export DOCKER_BUILDKIT=1 +export COMPOSE_DOCKER_CLI_BUILD=1 + +BRANCH="${1:-develop}" +echo "Starting Deployment for branch: ${BRANCH}" + +if [ "$BRANCH" == "develop" ]; then + COMPOSE_FILE="compose.stage.yml" + TARGET_DIR="/opt/services/canina/stage" + BACKEND_HOST="backend_stage" + APP_HOST="stage.canina.ir" + ADMIN_HOST="stageadmin.canina.ir" + API_URL="https://stageapi.canina.ir" + CONTAINER_PREFIX="canino_backend_stage" +else + COMPOSE_FILE="compose.prod.yml" + TARGET_DIR="/opt/services/canina/prod" + BACKEND_HOST="backend_prod" + APP_HOST="canina.ir" + ADMIN_HOST="admin.canina.ir" + API_URL="https://api.canina.ir" + CONTAINER_PREFIX="canino_backend_prod" +fi + +mkdir -p "$TARGET_DIR" +cd "$TARGET_DIR" + +if [ ! -d ".git" ]; then + echo "Cloning repository..." + git clone -b "$BRANCH" https://git.parsaaghayi.ir/parsa/canina.git . +else + echo "Pulling latest changes..." + git fetch origin "$BRANCH" + git reset --hard "origin/$BRANCH" +fi + +echo "Fixing .dockerignore..." +sed -i '/node_modules/d' .dockerignore 2>/dev/null || true +sed -i '/node_modules/d' backend/.dockerignore 2>/dev/null || true +sed -i '/^backend$/d' .dockerignore 2>/dev/null || true + +echo "Disabling TS checks for fast deploy..." +sed -i 's|tsc -b \&\& vite build|vite build|g' frontend/admin-panel/package.json 2>/dev/null || true +sed -i 's|tsc \&\& vite build|vite build|g' frontend/admin-panel/package.json 2>/dev/null || true + +# Copy scientificTerms.ts if needed +cp frontend/application/lib/data/scientificTerms.ts backend/prisma/scientificTerms.ts 2>/dev/null || true + +# Prepare docker-compose.yml in TARGET_DIR +cp "/opt/services/canina/$COMPOSE_FILE" "$TARGET_DIR/docker-compose.yml" +sed -i 's/- REDIS_PORT: 6379/- REDIS_PORT=6379/g' "$TARGET_DIR/docker-compose.yml" 2>/dev/null || true + +# Prepare nginx.conf for current environment +echo "Patching nginx.conf for environment..." +cp nginx.conf nginx.conf.tmp +sed -i "s/__BACKEND_HOST__/${BACKEND_HOST}/g" nginx.conf.tmp +sed -i "s/__APP_HOST__/${APP_HOST}/g" nginx.conf.tmp +sed -i "s/__ADMIN_HOST__/${ADMIN_HOST}/g" nginx.conf.tmp +mv nginx.conf.tmp nginx.conf + +echo "Building Docker images..." +docker compose build --build-arg NEXT_PUBLIC_API_URL="${API_URL}/api" --build-arg VITE_API_URL="${API_URL}" + +echo "Starting containers..." +docker compose up -d --force-recreate --remove-orphans + +echo "Waiting for backend to start..." +sleep 15 + +echo "Running migrations and seeding database..." +docker exec "$CONTAINER_PREFIX" npx prisma migrate deploy || true +docker exec "$CONTAINER_PREFIX" npx prisma db seed || true + +echo "Deployment for $BRANCH completed successfully!"