Feature/progress #30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Run Tests - Backend | |
| on: | |
| push: | |
| branches: ["*"] # Runs on all branches | |
| paths: | |
| - "backend/**" | |
| - "database/init.sql" | |
| pull_request: | |
| branches: ["*"] # Runs on all branches | |
| paths: | |
| - "backend/**" | |
| - "database/init.sql" | |
| jobs: | |
| test-backend: | |
| name: Test Backend | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v3 | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USER }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Set up Environment Variables | |
| run: | | |
| echo "MYSQL_DB_HOST=${{ secrets.DB_HOST }}" >> $GITHUB_ENV | |
| echo "MYSQL_DB_NAME=${{ secrets.DB_NAME }}" >> $GITHUB_ENV | |
| echo "MYSQL_USER=${{ secrets.MYSQL_USER }}" >> $GITHUB_ENV | |
| echo "MYSQL_ROOT_PASSWORD=${{ secrets.MYSQL_PASSWORD }}" >> $GITHUB_ENV | |
| echo "MYSQL_DATABASE=${{ secrets.DB_NAME }}" >> $GITHUB_ENV | |
| echo "MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}" >> $GITHUB_ENV | |
| echo "MYSQL_DB_PORT=${{ secrets.DB_PORT || 3306}}" >> $GITHUB_ENV | |
| echo "SERVER_PORT=${{ secrets.SERVER_PORT || 8000 }}" >> $GITHUB_ENV # Default to 8000 | |
| echo "EMAIL_HOST_USER=${{ secrets.EMAIL_USER }}" >> $GITHUB_ENV | |
| echo "EMAIL_HOST_PASSWORD=${{ secrets.EMAIL_PASS }}" >> $GITHUB_ENV | |
| echo "EMAIL_FROM=${{ secrets.EMAIL_FROM }}" >> $GITHUB_ENV | |
| - name: Start Database and Backend Services | |
| run: docker compose up -d database backend | |
| - name: Debug Database Status | |
| if: always() | |
| run: | | |
| echo "Docker container status:" | |
| docker ps -a | |
| echo "MySQL container logs:" | |
| docker logs mysql-container | |
| # Step 6: Wait for Database to be Ready | |
| - name: Wait for Database to be Ready | |
| run: | | |
| echo "Waiting for database to be ready..." | |
| until docker exec mysql-container mysqladmin ping -h localhost -u ${{ secrets.MYSQL_USER }} -p${{ secrets.MYSQL_PASSWORD }} --silent; do | |
| echo "Database is not ready yet. Retrying in 5 seconds..." | |
| sleep 5 | |
| done | |
| echo "Database is ready!" | |
| - name: Run Backend Tests | |
| run: docker compose run --rm backend sh -c "python manage.py wait_for_db && python manage.py test" | |
| - name: Debug backend Status | |
| if: always() | |
| run: | | |
| echo "Docker container status:" | |
| docker ps -a | |
| echo "Backend container logs:" | |
| docker logs backend-container | |
| - name: Stop and Cleanup | |
| if: always() | |
| run: docker compose down |