ci: replace stale ARGUS_STAGING_KEY with local cueapi-core in test job #26
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: Feature PR to Main | |
| on: | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:15-alpine | |
| env: | |
| POSTGRES_DB: cueapi_test | |
| POSTGRES_USER: runner | |
| POSTGRES_PASSWORD: "" | |
| POSTGRES_HOST_AUTH_METHOD: trust | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd "pg_isready -U runner -d cueapi_test" | |
| --health-interval 2s | |
| --health-timeout 3s | |
| --health-retries 15 | |
| redis: | |
| image: redis:7-alpine | |
| ports: | |
| - 6379:6379 | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 2s | |
| --health-timeout 3s | |
| --health-retries 10 | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.7 | |
| - name: Checkout cueapi-core | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.7 | |
| with: | |
| repository: cueapi/cueapi-core | |
| path: cueapi-core | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.3.0 | |
| with: | |
| python-version: '3.12' | |
| - name: Install dependencies | |
| run: | | |
| pip install -r cueapi-core/requirements.txt | |
| pip install -e . | |
| - name: Apply migrations to test DB | |
| working-directory: cueapi-core | |
| env: | |
| DATABASE_URL: postgresql+asyncpg://runner@localhost:5432/cueapi_test | |
| REDIS_URL: redis://localhost:6379 | |
| SESSION_SECRET: test-session-secret-32-chars-minimum!! | |
| ENV: test | |
| RESEND_API_KEY: "" | |
| run: python -m alembic upgrade head | |
| - name: Start cueapi-core API in background | |
| working-directory: cueapi-core | |
| env: | |
| DATABASE_URL: postgresql+asyncpg://runner@localhost:5432/cueapi_test | |
| REDIS_URL: redis://localhost:6379 | |
| SESSION_SECRET: test-session-secret-32-chars-minimum!! | |
| ENV: test | |
| RESEND_API_KEY: "" | |
| ALLOW_REGISTER: "true" | |
| BASE_URL: http://localhost:8000 | |
| run: | | |
| nohup python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 \ | |
| > /tmp/uvicorn.log 2>&1 & | |
| echo $! > /tmp/uvicorn.pid | |
| - name: Wait for API health | |
| run: | | |
| for i in $(seq 1 30); do | |
| if curl -sf http://127.0.0.1:8000/health > /dev/null; then | |
| echo "API ready after ${i}s" | |
| exit 0 | |
| fi | |
| sleep 1 | |
| done | |
| echo "API failed to start within 30s" | |
| cat /tmp/uvicorn.log | |
| exit 1 | |
| - name: Register test user and capture API key | |
| id: register_user | |
| run: | | |
| EMAIL="ci-sdk-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}@example.com" | |
| RESP=$(curl -sf -X POST http://127.0.0.1:8000/v1/auth/register \ | |
| -H "Content-Type: application/json" \ | |
| -d "{\"email\":\"${EMAIL}\"}") | |
| KEY=$(printf '%s' "$RESP" | python -c 'import sys,json;print(json.load(sys.stdin)["api_key"])') | |
| if [ -z "$KEY" ]; then | |
| echo "Registration failed; response: $RESP" | |
| exit 1 | |
| fi | |
| echo "::add-mask::$KEY" | |
| echo "api_key=$KEY" >> "$GITHUB_OUTPUT" | |
| - name: Run tests | |
| env: | |
| CUEAPI_STAGING_URL: http://127.0.0.1:8000 | |
| CUEAPI_STAGING_API_KEY: ${{ steps.register_user.outputs.api_key }} | |
| run: pytest tests/ -v --tb=short | |
| - name: Dump uvicorn log on failure | |
| if: failure() | |
| run: cat /tmp/uvicorn.log || true | |
| auto-merge: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Auto-merge PR | |
| run: gh pr merge ${{ github.event.pull_request.number }} --squash --auto | |
| env: | |
| GH_TOKEN: ${{ secrets.GOVIND_GITHUB_TOKEN }} | |
| GH_REPO: ${{ github.repository }} | |
| notify-merge: | |
| needs: auto-merge | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Create merge confirmation cue | |
| run: | | |
| FIRE_AT=$(date -u -d '+2 minutes' '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || \ | |
| date -u -v+2M '+%Y-%m-%dT%H:%M:%SZ') | |
| curl -s -w "\n%{http_code}" -X POST https://api.cueapi.ai/v1/cues \ | |
| -H "Authorization: Bearer ${{ secrets.ARGUS_CUEAPI_KEY }}" \ | |
| -H "Content-Type: application/json" \ | |
| -d "{ | |
| \"name\": \"cueapi-python-merged-${{ github.event.pull_request.number }}\", | |
| \"schedule\": {\"type\": \"once\", \"at\": \"${FIRE_AT}\"}, | |
| \"transport\": \"worker\", | |
| \"payload\": { | |
| \"task\": \"test-sdk\", | |
| \"trigger\": \"post-merge\", | |
| \"repo\": \"cueapi/cueapi-python\", | |
| \"pr_number\": \"${{ github.event.pull_request.number }}\", | |
| \"commit_sha\": \"${{ github.event.pull_request.head.sha }}\" | |
| } | |
| }" |