From 5a244ed35e9ce7e9266f9b37e9575db5ce1ed34f Mon Sep 17 00:00:00 2001 From: mahan Date: Tue, 10 Feb 2026 16:37:48 +0330 Subject: [PATCH] change deploy-dev.yml --- .gitea/workflows/dad-mehr-gitea-deploy.yml | 91 ---------------------- .gitea/workflows/deploy-dev.yml | 64 +++++++++++++++ 2 files changed, 64 insertions(+), 91 deletions(-) delete mode 100644 .gitea/workflows/dad-mehr-gitea-deploy.yml create mode 100644 .gitea/workflows/deploy-dev.yml diff --git a/.gitea/workflows/dad-mehr-gitea-deploy.yml b/.gitea/workflows/dad-mehr-gitea-deploy.yml deleted file mode 100644 index fcfebdf9..00000000 --- a/.gitea/workflows/dad-mehr-gitea-deploy.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: Build and Deploy (.NET) - -on: - push: - tags: - - 'v*' - -env: - IMAGE_NAME: my-project - DEPLOY_PATH: /home/${{ secrets.SSH_USERNAME }}/deployments/my-project - -jobs: - build-push: - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Login to Private Registry - uses: docker/login-action@v3 - with: - registry: ${{ secrets.DOCKER_REGISTRY }} - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build and Push - uses: docker/build-push-action@v5 - with: - context: . - push: true - tags: | - ${{ secrets.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.ref_name }} - ${{ secrets.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest - - deploy: - needs: build-push - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - # فقط فایل docker-compose.yml را آپدیت می‌کنیم (فایل .env روی سرور دست نمی‌خورد) - - name: Copy docker-compose to Server - uses: appleboy/scp-action@v0.1.7 - with: - host: ${{ secrets.SSH_HOST }} - username: ${{ secrets.SSH_USERNAME }} - key: ${{ secrets.SSH_KEY }} - port: 22 - source: "docker-compose.yml" - target: ${{ env.DEPLOY_PATH }} - - # اجرا روی سرور - - name: Remote SSH Commands - uses: appleboy/ssh-action@v1.0.3 - env: - # تعریف متغیرهایی که می‌خواهیم به سرور پاس دهیم - DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }} - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - APP_VERSION: ${{ gitea.ref_name }} # ورژن تگ شده - APP_PORT: ${{ secrets.APP_PORT }} - IMAGE_NAME: ${{ env.IMAGE_NAME }} - with: - host: ${{ secrets.SSH_HOST }} - username: ${{ secrets.SSH_USERNAME }} - key: ${{ secrets.SSH_KEY }} - port: 22 - # لیست متغیرهایی که باید به نشست SSH منتقل شوند - envs: DOCKER_REGISTRY,DOCKER_USERNAME,DOCKER_PASSWORD,APP_VERSION,APP_PORT,IMAGE_NAME - script: | - cd ${{ env.DEPLOY_PATH }} - - # لاگین داکر - echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u $DOCKER_USERNAME --password-stdin - - # نکته مهم: - # الان متغیرهای APP_VERSION و ... در حافظه این Session موجود هستند. - # وقتی دستور docker compose اجرا شود، مقادیر ${APP_VERSION} در فایل yml - # را با مقادیر موجود در حافظه جایگزین می‌کند. - # و فایل .env موجود روی دیسک را هم برای سایر متغیرها می‌خواند. - - echo "Deploying version: $APP_VERSION" - - # پول کردن با استفاده از متغیرهای حافظه - docker compose pull - - # اجرای کانتینر - docker compose up -d --remove-orphans - - docker image prune -f diff --git a/.gitea/workflows/deploy-dev.yml b/.gitea/workflows/deploy-dev.yml new file mode 100644 index 00000000..2a1fe6e5 --- /dev/null +++ b/.gitea/workflows/deploy-dev.yml @@ -0,0 +1,64 @@ +name: Deploy Dev (Branch Trigger) + +on: + push: + branches: + - Feature/general/docker + +env: + IMAGE_NAME: gozareshgir-api + # مسیری که فایل docker-compose.yml مخصوص تست در سرور قرار دارد + SERVER_PATH: ~/apps/test-dev/backend-api + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + # 1. لاگین به داکر هاب/رجیستری شخصی + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: ${{ secrets.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # 2. بیلد و پوش کردن ایمیج با تگ :dev + - name: Build and Push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:dev + + # 3. اتصال به سرور و آپدیت سرویس + - name: Update Service on Test Server + uses: appleboy/ssh-action@v1.0.3 + env: + DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + APP_VERSION: dev # ورژن تست همیشه dev است + with: + host: ${{ secrets.SSH_HOST_TEST }} + username: ${{ secrets.SSH_USERNAME_TEST }} + key: ${{ secrets.SSH_KEY_TEST }} + port: 22 + envs: DOCKER_REGISTRY,DOCKER_USERNAME,DOCKER_PASSWORD,APP_VERSION + script: | + cd ${{ env.SERVER_PATH }} + + # لاگین مجدد در سرور برای اطمینان + echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u $DOCKER_USERNAME --password-stdin + + # اکسپورت کردن ورژن برای اینکه فایل داکر-کمپوز سرور آن را بشناسد + export APP_VERSION=$APP_VERSION + + # دانلود ایمیج جدید و آپدیت کانتینر + docker compose pull + docker compose up -d --remove-orphans + + # پاک کردن ایمیج‌های قدیمی برای پر نشدن فضای سرور + docker image prune -f