@@ -239,7 +239,177 @@ jobs:
239239 # docker image prune -af
240240 # docker volume prune -f
241241
242+ # deploy:
243+ # needs: setup-and-test
244+ # if: success() && github.event_name == 'push' && github.ref == 'refs/heads/main'
245+ # runs-on: self-hosted
246+ # permissions: write-all
247+ # steps:
248+ # - name: Pre-checkout cleanup
249+ # run: |
250+ # # Stop any Python processes
251+ # sudo pkill -f python || true
252+
253+ # # Remove problematic __pycache__ directories
254+ # sudo find /home/azureuser/actions-runner/_work/Mapapi/Mapapi -type d -name "__pycache__" -exec rm -rf {} + || true
255+
256+ # # Force remove the entire directory if needed
257+ # sudo rm -rf /home/azureuser/actions-runner/_work/Mapapi/Mapapi || true
258+
259+ # # Recreate directory with proper permissions
260+ # sudo mkdir -p /home/azureuser/actions-runner/_work/Mapapi/Mapapi
261+ # sudo chown -R $USER:$USER /home/azureuser/actions-runner/_work/Mapapi/Mapapi
262+ # sudo chmod -R 777 /home/azureuser/actions-runner/_work/Mapapi/Mapapi
263+
264+ # - name: Checkout Repository
265+ # uses: actions/checkout@v3
266+
267+ # - name: Login to Docker Hub
268+ # uses: docker/login-action@v2
269+ # with:
270+ # username: ${{ secrets.DOCKER_USERNAME }}
271+ # password: ${{ secrets.DOCKER_PASSWORD }}
272+
273+ # - name: Create entrypoint.sh
274+ # run: |
275+ # cat > entrypoint.sh << 'EOL'
276+ # #!/bin/sh
277+ # set -e
278+
279+ # # Wait for postgres to be ready
280+ # python manage.py wait_for_db
281+
282+ # # Apply database migrations
283+ # python manage.py migrate
284+
285+ # # Create superuser if it doesn't exist
286+ # python manage.py createsuperuser --noinput || true
287+
288+ # # Start server
289+ # exec python manage.py runserver 0.0.0.0:8000
290+ # EOL
291+ # shell: bash
292+ # continue-on-error: false
293+
294+ # - name: Create .env file
295+ # run: |
296+ # {
297+ # echo "ALLOWED_HOSTS=${{ secrets.ALLOWED_HOSTS }}"
298+ # echo "ANDROID_CLIENT_ID=${{ secrets.ANDROID_CLIENT_ID }}"
299+ # echo "DB_HOST=${{ secrets.DB_HOST }}"
300+ # echo "DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }}"
301+ # echo "DJANGO_SUPERUSER_FIRST_NAME=${{ secrets.DJANGO_SUPERUSER_FIRST_NAME }}"
302+ # echo "DJANGO_SUPERUSER_LAST_NAME=${{ secrets.DJANGO_SUPERUSER_LAST_NAME }}"
303+ # echo "DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }}"
304+ # echo "DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }}"
305+ # echo "IOS_CLIENT_ID=${{ secrets.IOS_CLIENT_ID }}"
306+ # echo "PORT=${{ secrets.PORT }}"
307+ # echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}"
308+ # echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}"
309+ # echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}"
310+ # echo "SECRET_KEY=${{ secrets.SECRET_KEY }}"
311+ # echo "WEB_CLIENT_ID=${{ secrets.WEB_CLIENT_ID }}"
312+ # echo "WEB_CLIENT_SECRET=${{ secrets.WEB_CLIENT_SECRET }}"
313+ # echo "TWILIO_ACCOUNT_SID=${{ secrets.TWILIO_ACCOUNT_SID }}"
314+ # echo "TWILIO_AUTH_TOKEN=${{ secrets.TWILIO_AUTH_TOKEN }}"
315+ # echo "TWILIO_PHONE_NUMBER=${{ secrets.TWILIO_PHONE_NUMBER }}"
316+ # } > .env
317+
318+ # - name: Build and Run Docker Compose
319+ # env:
320+ # ALLOWED_HOSTS: ${{ secrets.ALLOWED_HOSTS }}
321+ # ANDROID_CLIENT_ID: ${{ secrets.ANDROID_CLIENT_ID }}
322+ # DB_HOST: ${{ secrets.DB_HOST }}
323+ # DJANGO_SUPERUSER_EMAIL: ${{ secrets.DJANGO_SUPERUSER_EMAIL }}
324+ # DJANGO_SUPERUSER_FIRST_NAME: ${{ secrets.DJANGO_SUPERUSER_FIRST_NAME }}
325+ # DJANGO_SUPERUSER_LAST_NAME: ${{ secrets.DJANGO_SUPERUSER_LAST_NAME }}
326+ # DJANGO_SUPERUSER_PASSWORD: ${{ secrets.DJANGO_SUPERUSER_PASSWORD }}
327+ # DJANGO_SUPERUSER_USERNAME: ${{ secrets.DJANGO_SUPERUSER_USERNAME }}
328+ # IOS_CLIENT_ID: ${{ secrets.IOS_CLIENT_ID }}
329+ # PORT: ${{ secrets.PORT }}
330+ # POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
331+ # POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
332+ # POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
333+ # SECRET_KEY: ${{ secrets.SECRET_KEY }}
334+ # TEST_POSTGRES_DB: ${{ secrets.TEST_POSTGRES_DB }}
335+ # WEB_CLIENT_ID: ${{ secrets.WEB_CLIENT_ID }}
336+ # WEB_CLIENT_SECRET: ${{ secrets.WEB_CLIENT_SECRET }}
337+ # TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }}
338+ # TWILIO_AUTH_TOKEN: ${{ secrets.TWILIO_AUTH_TOKEN }}
339+ # TWILIO_PHONE_NUMBER: ${{ secrets.TWILIO_PHONE_NUMBER }}
340+ # run: |
341+ # # Conditionally remove existing network if it exists
342+ # docker network ls | grep -q mapapi_micro-services-network && docker network rm mapapi_micro-services-network || true
343+
344+ # # Build and run Docker Compose
345+ # docker-compose -f _cd_pipeline.yml up --build -d
346+
347+ # - name: Post-deployment cleanup
348+ # if: always()
349+ # run: |
350+ # # Clean up dangling volumes and images
351+ # docker system prune -af --volumes
352+ # docker image prune -af
353+ # docker volume prune -f
354+
242355 deploy :
356+ <<<<<<< HEAD
357+ needs : setup-and-test
358+ if : success() && github.event_name == 'push' && github.ref == 'refs/heads/main'
359+ runs-on : ubuntu-latest
360+
361+ steps :
362+ - name : Set up SSH connection
363+ run : |
364+ mkdir -p ~/.ssh
365+ echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_rsa
366+ chmod 600 ~/.ssh/id_rsa
367+ ssh-keyscan -H 13.36.39.58 >> ~/.ssh/known_hosts
368+
369+ - name : Deploy to EC2 instance
370+ run : |
371+ ssh ec2-user@13.36.39.58 << 'EOF'
372+ cd ~/app
373+
374+ if [ ! -d ".git" ]; then
375+ git clone https://github.com/223MapAction/Mapapi.git .
376+ fi
377+
378+ git pull origin main
379+
380+ echo "Création du fichier .env..."
381+ cat > .env <<EOL
382+ ALLOWED_HOSTS: ${{ secrets.ALLOWED_HOSTS }}
383+ ANDROID_CLIENT_ID: ${{ secrets.ANDROID_CLIENT_ID }}
384+ DB_HOST: ${{ secrets.DB_HOST }}
385+ DJANGO_SUPERUSER_EMAIL: ${{ secrets.DJANGO_SUPERUSER_EMAIL }}
386+ DJANGO_SUPERUSER_FIRST_NAME: ${{ secrets.DJANGO_SUPERUSER_FIRST_NAME }}
387+ DJANGO_SUPERUSER_LAST_NAME: ${{ secrets.DJANGO_SUPERUSER_LAST_NAME }}
388+ DJANGO_SUPERUSER_PASSWORD: ${{ secrets.DJANGO_SUPERUSER_PASSWORD }}
389+ DJANGO_SUPERUSER_USERNAME: ${{ secrets.DJANGO_SUPERUSER_USERNAME }}
390+ IOS_CLIENT_ID: ${{ secrets.IOS_CLIENT_ID }}
391+ PORT: ${{ secrets.PORT }}
392+ POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
393+ POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
394+ POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
395+ SECRET_KEY: ${{ secrets.SECRET_KEY }}
396+ TEST_POSTGRES_DB: ${{ secrets.TEST_POSTGRES_DB }}
397+ WEB_CLIENT_ID: ${{ secrets.WEB_CLIENT_ID }}
398+ WEB_CLIENT_SECRET: ${{ secrets.WEB_CLIENT_SECRET }}
399+ TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }}
400+ TWILIO_AUTH_TOKEN: ${{ secrets.TWILIO_AUTH_TOKEN }}
401+ TWILIO_PHONE_NUMBER: ${{ secrets.TWILIO_PHONE_NUMBER }}
402+ SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
403+ SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}
404+ USE_SUPABASE_STORAGE: ${{ secrets.USE_SUPABASE_STORAGE }}
405+ EMAIL_HOST: ${{ secrets.EMAIL_HOST }}
406+ EMAIL_HOST_USER: ${{ secrets.EMAIL_HOST_USER }}
407+ EMAIL_HOST_PASSWORD: ${{ secrets.EMAIL_HOST_PASSWORD }}
408+ EOL
409+
410+ ./deploy.sh
411+ EOF
412+ =======
243413 needs : cleanup
244414 if : github.event_name == 'push' && github.ref == 'refs/heads/main'
245415 runs-on : self-hosted
@@ -290,3 +460,4 @@ jobs:
290460 docker system prune -af --volumes
291461 docker image prune -af
292462 docker volume prune -f
463+ >>>>>>> f2c8cfb682a3a605275df0fab503112a426fc0c7
0 commit comments