diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..603545c --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,73 @@ +name: CI/CD Pipeline + +on: + push: + branches: + - main + +jobs: + build-and-deploy-backend: + runs-on: ubuntu-latest + + services: + db: + image: postgres:13 + env: + POSTGRES_DB: mydatabase + POSTGRES_USER: myuser + POSTGRES_PASSWORD: mypassword + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + run: | + docker build -t ghcr.io/${{ github.repository }}/backend:latest -f django_backend/Dockerfile . + docker push ghcr.io/${{ github.repository }}/backend:latest + + - name: Deploy to DigitalOcean + uses: appleboy/ssh-action@master + with: + host: 157.230.29.35 + username: root + key: ${{ secrets.DIGITALOCEAN_SSH_KEY }} + script: | + cd /root/Recipes.MasalaMonk.com + git pull origin main + docker-compose down + docker-compose pull web + docker-compose up -d + + deploy-frontend: + needs: build-and-deploy-backend + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install Vercel CLI + run: npm install -g vercel + + - name: Deploy to Vercel + env: + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + run: vercel --prod diff --git a/django_backend/backend/settings.py b/django_backend/backend/settings.py index 9651f49..e969b20 100644 --- a/django_backend/backend/settings.py +++ b/django_backend/backend/settings.py @@ -13,7 +13,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = ['157.230.29.35', 'localhost', '127.0.0.1'] +ALLOWED_HOSTS = ['157.230.29.35', 'localhost', '127.0.0.1', '.vercel.app'] AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', diff --git a/recipe.masalamonk.com/.env b/recipe.masalamonk.com/.env new file mode 100644 index 0000000..9b718d8 --- /dev/null +++ b/recipe.masalamonk.com/.env @@ -0,0 +1 @@ +VITE_API_URL=http://localhost:8000 # Local development diff --git a/recipe.masalamonk.com/.gitignore b/recipe.masalamonk.com/.gitignore index a547bf3..fc5ae9f 100644 --- a/recipe.masalamonk.com/.gitignore +++ b/recipe.masalamonk.com/.gitignore @@ -22,3 +22,4 @@ dist-ssr *.njsproj *.sln *.sw? +.vercel diff --git a/recipe.masalamonk.com/src/services/api.js b/recipe.masalamonk.com/src/services/api.js index 6bcae5c..e057af8 100644 --- a/recipe.masalamonk.com/src/services/api.js +++ b/recipe.masalamonk.com/src/services/api.js @@ -1,6 +1,6 @@ import axios from 'axios'; -const API_URL = 'http://localhost:8000'; // Ensure this URL is correct +const apiUrl = import.meta.env.VITE_API_URL; // Function to get the token from cookies function getAuthToken() { diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..db44645 --- /dev/null +++ b/vercel.json @@ -0,0 +1,14 @@ +{ + "version": 2, + "builds": [ + { + "src": "src/**/*.svelte", + "use": "@vercel/svelte" + }, + { + "src": "public/**/*", + "use": "@vercel/static" + } + ] + } + \ No newline at end of file