name: Docker Compose Action on: pull_request: branches: - master jobs: linting: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Install the latest version of uv uses: astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # v6 - name: Check format run: | uv run --frozen ruff format --diff - name: Linting run: | uv run --frozen ruff check integration-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run docker compose uses: hoverkraft-tech/compose-action@40041ff1b97dbf152cd2361138c2b03fa29139df # v2.3.0 with: compose-file: "./docker-compose.yml" - name: Install the latest version of uv uses: astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # v6 - name: Wait for service to be ready run: | echo "Waiting for service at http://localhost:8080/ocs/v2.php/apps/serverinfo/api/v1/info to return 401..." max_attempts=60 attempt=0 until curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8080/ocs/v2.php/apps/serverinfo/api/v1/info | grep -q "401"; do attempt=$((attempt + 1)) if [ $attempt -ge $max_attempts ]; then echo "Service did not become ready in time." exit 1 fi echo "Attempt $attempt/$max_attempts: Service not ready, sleeping for 5 seconds..." sleep 5 done echo "Service is ready (returned 401)." # Add subsequent steps here, e.g., running tests - name: Run tests env: NEXTCLOUD_HOST: "http://localhost:8080" NEXTCLOUD_USERNAME: "admin" NEXTCLOUD_PASSWORD: "admin" run: | uv run --frozen python -m pytest