Add benchmarks, device auth APIs, and docs #20
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
| # HCR MCP Server - CI/CD Pipeline | |
| # Builds and deploys to multiple cloud platforms | |
| name: Build and Deploy | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| tags: [ 'v*' ] | |
| pull_request: | |
| branches: [ main ] | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install dependencies | |
| run: | | |
| pip install -r requirements.txt | |
| pip install -e ".[dev]" | |
| - name: Run tests | |
| run: | | |
| python -m pytest tests/ -v --tb=short | |
| - name: Check syntax | |
| run: | | |
| python -m py_compile hcr/product/integrations/mcp_server.py | |
| python -m py_compile hcr/product/integrations/mcp_server_stdio.py | |
| build: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=ref,event=branch | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=sha,prefix=,suffix=,format=short | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| # Deploy to staging (optional) | |
| deploy-staging: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| if: github.ref == 'refs/heads/develop' | |
| environment: staging | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Example: Deploy to Google Cloud Run staging | |
| - name: Setup GCP | |
| uses: google-github-actions/setup-gcloud@v2 | |
| with: | |
| project_id: ${{ secrets.GCP_PROJECT_ID }} | |
| service_account_key: ${{ secrets.GCP_SA_KEY }} | |
| - name: Deploy to Cloud Run Staging | |
| run: | | |
| gcloud run deploy hcr-mcp-server-staging \ | |
| --image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ | |
| --region us-central1 \ | |
| --platform managed \ | |
| --no-allow-unauthenticated | |
| # Deploy to production (manual approval required) | |
| deploy-production: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| environment: production | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Add your production deployment steps here | |
| # Examples for different platforms: | |
| # Kubernetes deployment | |
| - name: Setup kubectl | |
| uses: azure/setup-kubectl@v3 | |
| if: false # Enable when ready | |
| # AWS ECS deployment | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| aws-region: us-east-1 | |
| if: false # Enable when ready | |
| # Google Cloud Run deployment | |
| - name: Setup GCP | |
| uses: google-github-actions/setup-gcloud@v2 | |
| with: | |
| project_id: ${{ secrets.GCP_PROJECT_ID }} | |
| service_account_key: ${{ secrets.GCP_SA_KEY }} | |
| if: false # Enable when ready | |
| - name: Deploy to Cloud Run Production | |
| run: | | |
| gcloud run deploy hcr-mcp-server \ | |
| --image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} \ | |
| --region us-central1 \ | |
| --platform managed \ | |
| --allow-unauthenticated | |
| if: false # Enable when ready |