Skip to content

chore(deps): bump mongoose from 9.7.0 to 9.7.1 (#316) #65

chore(deps): bump mongoose from 9.7.0 to 9.7.1 (#316)

chore(deps): bump mongoose from 9.7.0 to 9.7.1 (#316) #65

Workflow file for this run

name: Infrastructure & Code Deployment
on:
push:
branches: [main]
paths:
- 'tofu/**'
- 'api/**'
- 'shared/**'
- 'frontend/**'
- 'package.json'
- 'package-lock.json'
workflow_dispatch:
permissions:
contents: read
id-token: write
env:
NODE_VERSION: '24'
FRONTEND_APP_NAME: 'cover-craft-ui'
API_APP_NAME: 'cover-craft'
RESOURCE_GROUP: 'projects-rg'
API_RESOURCE_GROUP: 'projects-rg-api'
jobs:
infra-apply:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Azure Login
uses: azure/login@v3
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Setup OpenTofu
uses: opentofu/setup-opentofu@v2
with:
tofu_version: 1.6.0
- name: Tofu Init
working-directory: tofu
run: tofu init
env:
ARM_CLIENT_ID: ${{ fromJson(secrets.AZURE_CREDENTIALS).clientId }}
ARM_CLIENT_SECRET: ${{ fromJson(secrets.AZURE_CREDENTIALS).clientSecret }}
ARM_TENANT_ID: ${{ fromJson(secrets.AZURE_CREDENTIALS).tenantId }}
ARM_SUBSCRIPTION_ID: ${{ fromJson(secrets.AZURE_CREDENTIALS).subscriptionId }}
- name: Tofu Apply
working-directory: tofu
run: tofu apply -auto-approve -var="mongodb_uri=${{ secrets.MONGODB_URI }}"
env:
ARM_CLIENT_ID: ${{ fromJson(secrets.AZURE_CREDENTIALS).clientId }}
ARM_CLIENT_SECRET: ${{ fromJson(secrets.AZURE_CREDENTIALS).clientSecret }}
ARM_TENANT_ID: ${{ fromJson(secrets.AZURE_CREDENTIALS).tenantId }}
ARM_SUBSCRIPTION_ID: ${{ fromJson(secrets.AZURE_CREDENTIALS).subscriptionId }}
deploy-api:
needs: infra-apply
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install all dependencies
run: npm ci
- name: Build shared package
run: npm run build:shared
- name: Build API
run: npm run build --workspace=api
- name: Package API for deployment
working-directory: api
run: |
# 1. Clear existing modules
rm -rf node_modules
# 2. Force isolation by temporarily hiding root workspace files.
# This prevents npm from detecting the monorepo and hoisting dependencies.
if [ -f ../package.json ]; then mv ../package.json ../package.json.bak; fi
if [ -f ../package-lock.json ]; then mv ../package-lock.json ../package-lock.json.bak; fi
# 3. Install production dependencies (local to api folder)
npm install --omit=dev --no-audit --no-fund --install-links
# 4. Restore root workspace files
if [ -f ../package.json.bak ]; then mv ../package.json.bak ../package.json; fi
if [ -f ../package-lock.json.bak ]; then mv ../package-lock.json.bak ../package-lock.json; fi
# 5. Fail-safe: ensure shared/dist is physically present
mkdir -p node_modules/@cover-craft/shared/dist
cp -r ../shared/dist/* node_modules/@cover-craft/shared/dist/
# 6. Create zip
zip -r ../api-deploy.zip dist node_modules host.json package.json
- name: Azure Login
uses: azure/login@v3
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy API to Azure Functions
run: |
az functionapp deployment source config-zip \
--name ${{ env.API_APP_NAME }} \
--resource-group ${{ env.API_RESOURCE_GROUP }} \
--src api-deploy.zip
deploy-frontend:
needs: infra-apply
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install all dependencies
run: npm ci
- name: Build Shared
run: npm run build:shared
- name: Build Frontend (Standalone)
run: npm run build --workspace=frontend
- name: Package Frontend
run: |
# The standalone output includes everything needed to run
# We also need to include 'public' and 'static' for Next.js to serve them
cp -r frontend/public frontend/.next/standalone/frontend/
cp -r frontend/.next/static frontend/.next/standalone/frontend/.next/
# Zip the standalone folder
cd frontend/.next/standalone
zip -r ../../../frontend-deploy.zip .
- name: Azure Login
uses: azure/login@v3
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy Frontend to Azure Web App
run: |
az webapp deployment source config-zip \
--name ${{ env.FRONTEND_APP_NAME }} \
--resource-group ${{ env.RESOURCE_GROUP }} \
--src frontend-deploy.zip
# Set the startup command for Next.js standalone
az webapp config set \
--name ${{ env.FRONTEND_APP_NAME }} \
--resource-group ${{ env.RESOURCE_GROUP }} \
--startup-file "node frontend/server.js"