Skip to content

Add benchmarks, device auth APIs, and docs #20

Add benchmarks, device auth APIs, and docs

Add benchmarks, device auth APIs, and docs #20

Workflow file for this run

# 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