agentsclimarketplace

Azure deployment

Skill Ahtesham-Latif/Tie-Breaker-App/.agents/skills/azure_deployment

A deterministic AI decision engine powered by Azure AI & React. Generates structured matrices, SWOT profiles, and context-aware verdicts for any A vs B dilemma.

Install
npx -y skills add Ahtesham-Latif/Tie-Breaker-App --skill azure_deployment

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Best practices and exact steps for deploying a Node.js + Vite application to Azure App Service (Linux) using GitHub Actions and Azure AI Foundry.

SKILL.md

3.2 KB, as published. Nobody here has run it

Azure App Service Deployment (Node.js)

This skill outlines the flawless, best-practice path to deploy a Node.js application to Azure App Service (Linux) while securely connecting to an Azure AI Foundry agent via Managed Identity.

1. Cloud Infrastructure Setup

  • App Service Plan: Always choose a dedicated tier (e.g., Basic B1) for production. Free (F1) tiers have strict 60-minute daily CPU quotas that will forcefully shut down the application (Resulting in a 403 Stopped error).

2. Authentication & Managed Identity (Passwordless)

  1. Code: Use DefaultAzureCredential from @azure/identity in the Node.js backend.
  2. Enable Identity: In the Azure App Service portal, go to Settings > Identity and enable System assigned.
  3. IAM Permissions: In the target Azure AI Project, go to Access control (IAM) and assign the Azure AI Developer role to the App Service's Managed Identity. (Note: Cognitive Services OpenAI User is not sufficient for Azure Foundry Orchestration Agents).

3. Environment Variables (The Frontend vs Backend Trap)

When deploying a full-stack app (React/Vite + Node.js) via GitHub Actions, environment variables must be split logically:

The Frontend (Vite)

  • Variables prefixed with VITE_ (e.g., Supabase keys) are baked into the static HTML/JS at build time.
  • Where to set them: They MUST be stored in GitHub Secrets and explicitly mapped in your .github/workflows file under the env: block for the npm run build step.
  • Danger: If they are only in Azure and not in GitHub Actions, Vite will build the frontend with empty variables.

The Backend (Node.js)

  • The live server.js file reads environment variables at runtime from the cloud container.
  • Where to set them: Configure variables (e.g., Azure AI endpoints, Backend Supabase keys) directly in the Azure Portal under Settings > Environment variables.
  • Danger: The Azure App Service backend does NOT inherit your GitHub Actions secrets. You must set them in the Azure Portal manually.
  • Crucial: Variables are loaded into memory exactly once when the Node.js process starts. If a variable is added or changed, you must explicitly click Restart on the App Service Overview page.
  • To trust the Azure Load Balancer (required for express-rate-limit), ensure the Express app has app.set('trust proxy', 1);.

4. GitHub Actions CI/CD Pipeline

The safest deployment strategy avoids conflicting build engines (GitHub vs. Azure Oryx). Let GitHub do 100% of the building and packaging.

Workflow Best Practices:

  1. GitHub runs npm install and the frontend build (npm run build).
  2. GitHub uploads an artifact containing the compiled output (dist), backend files (server.js), and crucially, the node_modules folder.
    • Why? If node_modules is omitted, Azure's Oryx engine attempts to build the app itself by executing npm run build, which will crash because the raw source files (index.html) were not uploaded.
  3. Use azure/webapps-deploy@v3 with a Publish Profile stored as a GitHub Secret.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.