name: CI/CD Pipeline on: push: branches: - main # اگر اسم برنچ اصلیت master هست، این رو بکن master jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and Push Docker Image uses: docker/build-push-action@v5 with: context: . push: true tags: | didvan/basa_houshan_panel:latest didvan/basa_houshan_panel:${{ github.sha }} - name: Deploy to Server uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SERVER_IP_BASA_PANEL }} username: ${{ secrets.SERVER_USERNAME }} # اگر از کلید SSH استفاده می‌کنی این خط بمونه: key: ${{ secrets.SERVER_SSH_KEY }} # اگر از پسورد استفاده می‌کنی، خط بالا رو پاک کن و خط پایین رو از کامنت دربیار: # password: ${{ secrets.SERVER_PASSWORD }} script: | # !!! بسیار مهم: مسیر دقیق پوشه پروژه روی سرورت رو اینجا جایگزین کن !!! cd /home/ubuntu/app/panel-houshan # لاگین به داکر هاب روی سرور (برای دانلود ایمیج‌های Private) echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin # دانلود ایمیج جدید و ری‌استارت فقط همون کانتینر docker compose pull web docker compose up -d web # پاکسازی ایمیج‌های قدیمی docker image prune -f