name: Deploy to Production

on:
  push:
    branches:
      - main
    paths:
      - 'deploy/Pulumi.gcpProd.yaml'

permissions:
  contents: read

env:
  PULUMI_VERSION: "3.188.0"

jobs:
  deploy-production:
    name: Deploy to Production
    runs-on: ubuntu-latest
    environment: production
    concurrency:
      group: deploy-production
      cancel-in-progress: false
    steps:
      - name: Checkout code
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8

      - name: Setup Go
        uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417
        with:
          go-version-file: 'deploy/go.mod'
          cache: true

      - name: Setup Pulumi
        uses: pulumi/actions@8582a9e8cc630786854029b4e09281acd6794b58
        with:
          pulumi-version: ${{ env.PULUMI_VERSION }}

      - name: Authenticate to Google Cloud
        uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093
        with:
          credentials_json: ${{ secrets.GCP_PROD_SERVICE_ACCOUNT_KEY }}

      - name: Setup Google Cloud SDK
        uses: google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db
        with:
          project_id: mcp-registry-prod
          install_components: gke-gcloud-auth-plugin

      - name: Deploy to Production
        working-directory: ./deploy
        env:
          PULUMI_PROD_PASSPHRASE: ${{ secrets.PULUMI_PROD_PASSPHRASE }}
        run: |
          echo "$PULUMI_PROD_PASSPHRASE" > passphrase.prod.txt
          make prod-up