Skip to content

Update ci_cd.yml

Update ci_cd.yml #228

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
cleanup:
runs-on: self-hosted
steps:
- name: Free up disk space and clean workspace
run: |
# Clean up Docker resources
docker system prune -af
docker volume prune -f
# Display disk usage
df -h
# Clean up Python cache files
sudo find /home/ec2-user/actions-runner/_work/Mapapi -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true
sudo find /home/ec2-user/actions-runner/_work/Mapapi -name "*.pyc" -exec rm -f {} + 2>/dev/null || true
# Fix permissions
sudo chown -R ec2-user:ec2-user /home/ec2-user/actions-runner/_work/Mapapi || true
sudo chmod -R 755 /home/ec2-user/actions-runner/_work/Mapapi || true
deploy:
needs: cleanup
if: success() && github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Set up SSH connection
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H 13.36.39.58 >> ~/.ssh/known_hosts
- name: Deploy to EC2 instance
run: |
ssh ec2-user@13.36.39.58 << 'EOF'
cd ~/app
if [ ! -d ".git" ]; then
git clone https://github.com/223MapAction/Mapapi.git .
fi
git pull origin main
echo "Création du fichier .env..."
cat > .env <<EOL
ALLOWED_HOSTS=${{ secrets.ALLOWED_HOSTS }}
ANDROID_CLIENT_ID=${{ secrets.ANDROID_CLIENT_ID }}
DB_HOST=${{ secrets.DB_HOST }}
DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }}
DJANGO_SUPERUSER_FIRST_NAME=${{ secrets.DJANGO_SUPERUSER_FIRST_NAME }}
DJANGO_SUPERUSER_LAST_NAME=${{ secrets.DJANGO_SUPERUSER_LAST_NAME }}
DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }}
DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }}
IOS_CLIENT_ID=${{ secrets.IOS_CLIENT_ID }}
PORT=${{ secrets.PORT }}
POSTGRES_USER=${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_DB=${{ secrets.POSTGRES_DB }}
SECRET_KEY=${{ secrets.SECRET_KEY }}
TEST_POSTGRES_DB=${{ secrets.TEST_POSTGRES_DB }}
WEB_CLIENT_ID=${{ secrets.WEB_CLIENT_ID }}
WEB_CLIENT_SECRET=${{ secrets.WEB_CLIENT_SECRET }}
TWILIO_ACCOUNT_SID=${{ secrets.TWILIO_ACCOUNT_SID }}
TWILIO_AUTH_TOKEN=${{ secrets.TWILIO_AUTH_TOKEN }}
TWILIO_PHONE_NUMBER=${{ secrets.TWILIO_PHONE_NUMBER }}
SUPABASE_URL=${{ secrets.SUPABASE_URL }}
SUPABASE_ANON_KEY=${{ secrets.SUPABASE_ANON_KEY }}
USE_SUPABASE_STORAGE=${{ secrets.USE_SUPABASE_STORAGE }}
EMAIL_HOST=${{ secrets.EMAIL_HOST }}
EMAIL_HOST_USER=${{ secrets.EMAIL_HOST_USER }}
EMAIL_HOST_PASSWORD=${{ secrets.EMAIL_HOST_PASSWORD }}
EOL
./deploy.sh
EOF