name: CI on: push: branches: [main] pull_request: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" cache: pip - name: Install MySQL build dependencies run: | sudo apt-get update sudo apt-get install -y default-libmysqlclient-dev pkg-config - name: Install dependencies run: pip install -r requirements-dev.txt - name: Check migrations working-directory: backend run: python manage.py makemigrations --check --dry-run - name: Django checks working-directory: backend run: python manage.py check - name: ASGI import check working-directory: backend run: python -c "from config.asgi import application; print(type(application).__name__)" - name: Unit tests run: pytest -q - name: Start MySQL 8.0.35 run: | docker rm -f hulumath-ci-mysql 2>/dev/null || true docker run -d --name hulumath-ci-mysql \ -p 3307:3306 \ -e MYSQL_ROOT_PASSWORD=ci-root-password \ -e MYSQL_DATABASE=hulumath \ mysql:8.0.35 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_0900_ai_ci for i in $(seq 1 60); do if docker exec hulumath-ci-mysql \ mysqladmin ping -h 127.0.0.1 -uroot -pci-root-password --silent; then exit 0 fi sleep 2 done docker logs hulumath-ci-mysql exit 1 - name: MySQL migrations and tests env: DATABASE_URL: mysql://root:ci-root-password@127.0.0.1:3307/hulumath run: | python backend/manage.py check --database default python backend/manage.py check_mysql python backend/manage.py migrate --noinput pytest -q - name: Build image run: docker build -t hulumath:${{ gitea.sha }} .