diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml index 65abb4b..7f5bbdb 100644 --- a/.gitea/workflows/docker.yml +++ b/.gitea/workflows/docker.yml @@ -53,30 +53,39 @@ jobs: shell: bash run: | set -euo pipefail - docker run -d --name mm-pg \ + NAME="mm-pg-${{ gitea.run_id }}-${{ gitea.run_attempt }}" + docker rm -f "$NAME" mm-pg 2>/dev/null || true + HOST_PORT=$(python3 -c 'import socket; s=socket.socket(); s.bind(("127.0.0.1", 0)); print(s.getsockname()[1]); s.close()') + docker run -d --name "$NAME" --rm \ -e POSTGRES_USER=mmapp \ -e POSTGRES_PASSWORD=mmapp \ -e POSTGRES_DB=mmapp \ - -p 5432:5432 \ + -p "127.0.0.1:${HOST_PORT}:5432" \ postgres:18-alpine + echo "PG_CONTAINER=$NAME" >> "${GITHUB_ENV}" + echo "DATABASE_URL=postgres://mmapp:mmapp@127.0.0.1:${HOST_PORT}/mmapp" >> "${GITHUB_ENV}" for i in $(seq 1 40); do - if docker exec mm-pg pg_isready -U mmapp -d mmapp; then + if docker exec "$NAME" pg_isready -U mmapp -d mmapp; then exit 0 fi sleep 1 done echo "PostgreSQL не поднялся" + docker logs "$NAME" || true exit 1 - name: Install and test backend shell: bash - env: - DATABASE_URL: postgres://mmapp:mmapp@127.0.0.1:5432/mmapp run: | set -euo pipefail npm ci npm run test --prefix backend + - name: Stop PostgreSQL + if: always() + shell: bash + run: docker rm -f "${PG_CONTAINER:-}" mm-pg 2>/dev/null || true + backend-image: needs: - prepare-release