<!-- json
{
  "sourceId": "embracinglife-gcp-deploy",
  "repositoryId": "v2-embracing-life",
  "filePath": ".github/workflows/deploy-api.yml",
  "capabilityTags": ["workflow", "gcp", "deploy", "cloud-run"],
  "operationIds": ["workflow-gcp-deploy"],
  "applicability": ["sample-project"],
  "notes": [
    "Reference Cloud Run deployment workflow structure and artifact push strategy."
  ]
}
-->

# embracinglife-gcp-deploy

- Source: `.github/workflows/deploy-api.yml`
- Capability tags: workflow, gcp, deploy, cloud-run
- Applicability: sample-project
- Notes:
  - Reference Cloud Run deployment workflow structure and artifact push strategy.

## Reference Code

```yaml
---
on:
  push:
    branches:
      - main 
    paths:
      - ui/src/index.html
      - package.json
      - package-lock.json
      - modules/api/**
      - .github/workflows/deploy-api.yml  
  workflow_dispatch: {}

name: Deploy the API
env:
  PROJECT_ID: ${{ secrets.GCP_PROJECT }}
  PROJECT_NAME: v2-embracing-life-dev
  SERVICE: embracing-life-api
  REGION: us-east4
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:    
    - name: Checkout
      uses: actions/checkout@v6

    - name: Setup Node
      uses: actions/setup-node@v6
      with:
        node-version: 26.x

    - name: Install deps
      run: npm i

    - name: Build
      run: npx trvc build   

    - name: Auth Google Cloud
      uses: google-github-actions/auth@v3
      with:
        credentials_json: ${{ secrets.GCP_SA_KEY }} 
        create_credentials_file: true

    - name: Setup Cloud SDK
      uses: google-github-actions/setup-gcloud@v3
      with:
        project_id: ${{ env.PROJECT_ID }}
  
    - name: Authorize Docker push
      run: gcloud auth configure-docker us-central1-docker.pkg.dev
      
    - name: Pack and Push Container
      run: npm run pack -- -dr us-central1-docker.pkg.dev/${{ env.PROJECT_NAME }}/${{env.SERVICE}} -dn ${{env.SERVICE}} -dx -dt ${{ github.sha }}

    - name: Deploy to Cloud Run
      id: deploy
      uses: google-github-actions/deploy-cloudrun@v3
      with:
        service: ${{ env.SERVICE }}
        image: us-central1-docker.pkg.dev/${{ env.PROJECT_NAME }}/${{env.SERVICE}}/${{env.SERVICE}}:${{ github.sha }}
        region: ${{ env.REGION }}

    - name: Show Output
      run: echo ${{ steps.deploy.outputs.url }}
```
