This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a GitHub Action for deploying Python-based Firebase Cloud Functions. The repository serves dual purposes:
- GitHub Action implementation (
action.yml) - Live example Firebase function (
functions/)
# Install Python dependencies (in functions/ directory)
cd functions && uv sync
# Generate requirements.txt for Firebase deployment
cd functions && uv pip freeze > requirements.txt
# Start Firebase emulators for local development
firebase emulators:start
# Deploy to Firebase (default)
firebase deploy --only functions
# Deploy specific functions
firebase deploy --only functions:api,functions:webhook
# Deploy using make
make deploy-staging
# Select Firebase project
firebase use <project_id># Test the action locally (requires service account)
firebase deploy --only functions --debug
# List available Firebase projects
firebase projects:list
# Check Firebase emulator status
firebase emulators:start --only functions,authaction.yml: Composite action definition with steps for deployment- Uses
uvfor Python dependency management - Integrates with
google-github-actions/auth@v2for authentication - Supports configurable deployment commands via
deploy_commandinput - Can execute Firebase CLI commands or make targets
functions/main.py: Simple Flask-based HTTP functionfunctions/pyproject.toml: Python dependencies (firebase-admin, firebase-functions, flask)firebase.json: Firebase configuration with Python 3.11 runtime- Emulator ports: Functions (5001), Auth (9099)
- Python 3.10-3.11 (Firebase Functions constraint)
uvpackage manager for dependency management- Firebase CLI for deployment
- Node.js 20 for Firebase CLI
- Modify functions in
functions/main.py - Update dependencies in
functions/pyproject.tomlif needed - Run
uv syncto update lockfile - Test locally with Firebase emulators
- Deploy with
firebase deploy --only functions
- Service account credentials are handled securely via GitHub Actions
- Credentials are automatically cleaned up after deployment
- Uses Application Default Credentials (ADC) pattern