fix: добавлено удаление аватарки группы при удаление самой группы #84
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: CI | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - 'dev/*' | |
| - 'fix/*' | |
| pull_request: | |
| branches: | |
| - master | |
| - 'dev/*' | |
| - 'fix/*' | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| - name: Install project with uv | |
| run: | | |
| uv pip install -r requirements-dev.txt --system | |
| - name: Ruff - check style | |
| run: ruff check . | |
| test: | |
| needs: lint | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 4 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Ensure docker & compose available | |
| run: | | |
| docker --version | |
| if ! docker compose version >/dev/null 2>&1; then | |
| sudo apt-get update | |
| sudo apt-get install -y docker-compose-plugin | |
| fi | |
| docker compose version | |
| - name: Start services (detached) and run tests | |
| env: | |
| COMPOSE_HTTP_TIMEOUT: '200' | |
| PROJECT_NAME: "taskflow_test" | |
| COMPOSE_FILE: "docker-compose.test.yml" | |
| ENV_FILE: ".env.test" | |
| TEST_CONTAINER: "taskflow_web_test" | |
| STARTUP_TIMEOUT: "120" | |
| run: | | |
| set -euo pipefail | |
| docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up --build -d | |
| echo "Waiting for test container ($TEST_CONTAINER) to appear..." | |
| SECONDS_WAITED=0 | |
| START_TIMEOUT=${STARTUP_TIMEOUT} | |
| while true; do | |
| STATUS=$(docker inspect -f '{{.State.Status}}' "$TEST_CONTAINER" 2>/dev/null || echo "missing") | |
| if [ "$STATUS" = "running" ] || [ "$STATUS" = "exited" ]; then | |
| echo "Container status: $STATUS" | |
| break | |
| fi | |
| if [ "$SECONDS_WAITED" -ge "$START_TIMEOUT" ]; then | |
| echo "ERROR: test container did not appear within ${START_TIMEOUT}s." | |
| echo "docker compose ps:" | |
| docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" --env-file "$ENV_FILE" ps -a | |
| echo "docker compose logs (last 200 lines):" | |
| docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" --env-file "$ENV_FILE" logs --no-color --tail 200 || true | |
| docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" --env-file "$ENV_FILE" down --volumes --remove-orphans || true | |
| exit 1 | |
| fi | |
| sleep 2 | |
| SECONDS_WAITED=$((SECONDS_WAITED+2)) | |
| done | |
| echo "Waiting for $TEST_CONTAINER to finish (docker wait)..." | |
| EXIT_CODE=$(docker wait "$TEST_CONTAINER" 2>/dev/null || echo "127") | |
| echo "Test container exit code: $EXIT_CODE" | |
| echo "==== docker compose logs for web-test ====" | |
| docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" --env-file "$ENV_FILE" logs --no-color --timestamps web-test || true | |
| echo "==== docker logs (container) ====" | |
| docker logs --timestamps "$TEST_CONTAINER" || true | |
| docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE" --env-file "$ENV_FILE" down --volumes --remove-orphans || true | |
| # Выходим с тем же кодом, что и тестовый контейнер | |
| exit $EXIT_CODE |