Skip to content

Rewrite Azure provision/deploy reference for ui-widget-developer skill#135

Open
phnguy wants to merge 3 commits into
microsoft:mainfrom
phnguy:skill/azure-provision-deploy-rewrite
Open

Rewrite Azure provision/deploy reference for ui-widget-developer skill#135
phnguy wants to merge 3 commits into
microsoft:mainfrom
phnguy:skill/azure-provision-deploy-rewrite

Conversation

@phnguy

@phnguy phnguy commented Jun 9, 2026

Copy link
Copy Markdown

Rename m365-agents-iac-wireup.md to azure-provision-deploy.md and reframe it around the real objective: making the Agents Toolkit Provision and Deploy actions create Azure resources (Bicep) and ship the MCP server to Azure App Service. Leads with the two observed failure modes (cannot provision, no deploy path), standardizes on env/.env.dev layout, and links the reference from SKILL.md.

Rename m365-agents-iac-wireup.md to azure-provision-deploy.md and reframe it around the real objective: making the Agents Toolkit Provision and Deploy actions create Azure resources (Bicep) and ship the MCP server to Azure App Service. Leads with the two observed failure modes (cannot provision, no deploy path), standardizes on env/.env.dev layout, and links the reference from SKILL.md.
@microsoft-github-policy-service

Copy link
Copy Markdown

@phnguy please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.

@microsoft-github-policy-service agree [company="{your company}"]

Options:

  • (default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
@microsoft-github-policy-service agree
  • (when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.
@microsoft-github-policy-service agree company="Microsoft"
Contributor License Agreement

Contribution License Agreement

This Contribution License Agreement (“Agreement”) is agreed to by the party signing below (“You”),
and conveys certain license rights to Microsoft Corporation and its affiliates (“Microsoft”) for Your
contributions to Microsoft open source projects. This Agreement is effective as of the latest signature
date below.

  1. Definitions.
    “Code” means the computer software code, whether in human-readable or machine-executable form,
    that is delivered by You to Microsoft under this Agreement.
    “Project” means any of the projects owned or managed by Microsoft and offered under a license
    approved by the Open Source Initiative (www.opensource.org).
    “Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any
    Project, including but not limited to communication on electronic mailing lists, source code control
    systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
    discussing and improving that Project, but excluding communication that is conspicuously marked or
    otherwise designated in writing by You as “Not a Submission.”
    “Submission” means the Code and any other copyrightable material Submitted by You, including any
    associated comments and documentation.
  2. Your Submission. You must agree to the terms of this Agreement before making a Submission to any
    Project. This Agreement covers any and all Submissions that You, now or in the future (except as
    described in Section 4 below), Submit to any Project.
  3. Originality of Work. You represent that each of Your Submissions is entirely Your original work.
    Should You wish to Submit materials that are not Your original work, You may Submit them separately
    to the Project if You (a) retain all copyright and license information that was in the materials as You
    received them, (b) in the description accompanying Your Submission, include the phrase “Submission
    containing materials of a third party:” followed by the names of the third party and any licenses or other
    restrictions of which You are aware, and (c) follow any other instructions in the Project’s written
    guidelines concerning Submissions.
  4. Your Employer. References to “employer” in this Agreement include Your employer or anyone else
    for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
    Submission is made in the course of Your work for an employer or Your employer has intellectual
    property rights in Your Submission by contract or applicable law, You must secure permission from Your
    employer to make the Submission before signing this Agreement. In that case, the term “You” in this
    Agreement will refer to You and the employer collectively. If You change employers in the future and
    desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
    and secure permission from the new employer before Submitting those Submissions.
  5. Licenses.
  • Copyright License. You grant Microsoft, and those who receive the Submission directly or
    indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the
    Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute
    the Submission and such derivative works, and to sublicense any or all of the foregoing rights to third
    parties.
  • Patent License. You grant Microsoft, and those who receive the Submission directly or
    indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under
    Your patent claims that are necessarily infringed by the Submission or the combination of the
    Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
    import or otherwise dispose of the Submission alone or with the Project.
  • Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
    No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
    granted by implication, exhaustion, estoppel or otherwise.
  1. Representations and Warranties. You represent that You are legally entitled to grant the above
    licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
    have disclosed under Section 3). You represent that You have secured permission from Your employer to
    make the Submission in cases where Your Submission is made in the course of Your work for Your
    employer or Your employer has intellectual property rights in Your Submission by contract or applicable
    law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
    have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
    You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
    REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
    EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
    PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
    NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
  2. Notice to Microsoft. You agree to notify Microsoft in writing of any facts or circumstances of which
    You later become aware that would make Your representations in this Agreement inaccurate in any
    respect.
  3. Information about Submissions. You agree that contributions to Projects and information about
    contributions may be maintained indefinitely and disclosed publicly, including Your name and other
    information that You submit with Your Submission.
  4. Governing Law/Jurisdiction. This Agreement is governed by the laws of the State of Washington, and
    the parties consent to exclusive jurisdiction and venue in the federal courts sitting in King County,
    Washington, unless no federal subject matter jurisdiction exists, in which case the parties consent to
    exclusive jurisdiction and venue in the Superior Court of King County, Washington. The parties waive all
    defenses of lack of personal jurisdiction and forum non-conveniens.
  5. Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
    supersedes any and all prior agreements, understandings or communications, written or oral, between
    the parties relating to the subject matter hereof. This Agreement may be assigned by Microsoft.

@sebastienlevert

Copy link
Copy Markdown
Collaborator

@ericsche any thoughts on this PR? I'm no expert here and want to make sure it reflects the experience you had in the past. Thanks!

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the ui-widget-developer skill documentation to better support deploying an Agents Toolkit-based project to Azure by adding a new Azure provisioning/deployment reference and linking to it from the skill.

Changes:

  • Add a new reference guide describing how to wire Agents Toolkit Provision/Deploy to Azure (Bicep + App Service zip deploy).
  • Link the new Azure reference from the DevTunnels section of SKILL.md.
Show a summary per file
File Description
plugins/microsoft-365-agents-toolkit/skills/ui-widget-developer/SKILL.md Adds a pointer from DevTunnels guidance to the new Azure provision/deploy reference.
plugins/microsoft-365-agents-toolkit/skills/ui-widget-developer/references/azure-provision-deploy.md New reference doc describing a Provision/Deploy lifecycle using arm/deploy + azureAppService/zipDeploy, env file layout, and troubleshooting.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 2/2 changed files
  • Comments generated: 3

Comment on lines +1 to +19
---
name: azure-provision-deploy
description: |
Make the Agents Toolkit "Provision" and "Deploy" actions do real Azure work for an
existing Microsoft 365 Agents Toolkit project. Fixes the two failure modes seen in
practice: (1) Provision fails or does nothing because m365agents.yml has no Azure
infrastructure step, and (2) there is no Deploy stage, so there is no way to push the
MCP server to Azure. The skill rewrites m365agents.yml, adds Bicep under infra/, and
fixes the env/.env.<env> + env/.env.<env>.user files so Provision creates resources and
Deploy ships code to Azure App Service.
when_to_use:
- "make the Provision and Deploy buttons work in Agents Toolkit"
- "Provision does nothing / Provision fails with no Azure resources"
- "no way to deploy the MCP server to Azure"
- "wire m365agents.yml to Azure with Bicep"
- "add provision + deploy lifecycle to an M365 agent project"
- "deploy MCP server to Azure App Service from the Agents Toolkit extension"
schema_version: m365agents v1.11
---
Comment on lines +63 to +66
| `env/.env.dev` (and other non-local envs) | which envs exist; existing keys and values |
| `env/.env.dev.user` | secret keys (must start with `SECRET_`) |
| `.gitignore` | confirm `env/.env.*.user` and `env/.env.<env>` are ignored |
| `appPackage/manifest.json` and any `*-plugin.json` | which `${{VARS}}` are referenced (e.g. `MCP_SERVER_URL`) |
Comment on lines +291 to +295
`.gitignore` must ignore:
```
env/.env.*.user
env/.env.<each-non-local-env>
```
@ericsche

ericsche commented Jun 15, 2026 via email

Copy link
Copy Markdown
Contributor

Wires up and substantially expands the Azure deployment guidance for MCP Apps servers in the microsoft-365-agents-toolkit plugin, so users get a complete, identity-first path from scaffold to hosted App Service.

references/azure-provision-deploy.md

Added a "Provisioning model" overview and a new resource-group step: create (with user location choice) or reuse a group, persisting both AZURE_RESOURCE_GROUP_NAME and AZURE_RESOURCE_GROUP_ID to env for re-runs/teardown.
Reworked the Bicep to provision a user-assigned managed identity, optional Storage (keys disabled, RBAC role assignment), and Application Insights + Log Analytics for monitoring.
Changed the default App Service plan from F1 to B1 (Linux) with an @Allowed SKU list and cold-start guidance; kept Node 22 to match the MCP server runtime.
Added a two-option secret-handling section: (A) move to managed identity (required for OBO), or (B) Key Vault with @Microsoft.KeyVault(SecretUri=...) app-setting references, including the Bicep sketch and identity authorization steps.
New troubleshooting rows (role-assignment auth, storage 403, missing telemetry, cold start, unresolved Key Vault reference); renumbered all steps; updated conventions and frontmatter when_to_use.
SKILL.md

Fixed orphaned reference: added a "Deploy to Azure" row to Scenario Routing and a dedicated "Deploy to Azure (remote hosting)" section linking references/azure-provision-deploy.md.
Version bump (synced across previously inconsistent sources)

microsoft-365-agents-toolkit plugin → 1.5.0 in plugin.json, marketplace.json, and marketplace.json (reconciled prior 1.4.0/1.3.1 mismatch).
@ericsche

Copy link
Copy Markdown
Contributor

Pushed a follow-up commit (4bb5919) that wires up and expands the Azure provision/deploy path for the ui-widget-developer skill.

What changed

references/azure-provision-deploy.md

Added a "Provisioning model" overview plus a new resource-group step: create (with a user location choice) or reuse a group, persisting both AZURE_RESOURCE_GROUP_NAME and AZURE_RESOURCE_GROUP_ID to env for re-runs/teardown.
Reworked the Bicep to be identity-first: a user-assigned managed identity, optional Storage (shared keys disabled + RBAC role assignment), and Application Insights + Log Analytics for monitoring.
Changed the default App Service plan from F1 → B1 (Linux) with an @Allowed SKU list and cold-start guidance; kept Node 22 to match the MCP server runtime.
Added a two-option secret-handling section: (A) move to managed identity (required for OBO), or (B) Key Vault with @Microsoft.KeyVault(SecretUri=...) app-setting references, including the Bicep sketch and identity authorization steps.
New troubleshooting rows (role-assignment auth, storage 403, missing telemetry, cold start, unresolved Key Vault reference); renumbered steps; updated conventions and when_to_use.
SKILL.md

Fixed an orphaned reference — the Azure deploy doc existed but nothing linked to it. Added a "Deploy to Azure" row to Scenario Routing and a dedicated "Deploy to Azure (remote hosting)" section.
Versioning

Bumped microsoft-365-agents-toolkit to 1.5.0, syncing plugin.json with both marketplace.json files (they had drifted to 1.4.0/1.3.1).

@ericsche

Copy link
Copy Markdown
Contributor

@sebastienlevert just tested the version with my modification and was able to create a DA with MCP apps and provision in Azure with a good experience
image
image

Good to go for me.
Follow up work to envision is the Authentication because the process only push anonymous MCP server. We could probably do better. But i'll wait for the SSO skill to arrive to updat :)

azure-provision-deploy.md: document Strategy A (Oryx build + start script) vs Strategy B (prebuilt node_modules + appCommandLine), tsx stage variant, headless-login note, and new troubleshooting rows/conventions. Register teams-app-developer in both marketplace.json files and the plugin README.
@ericsche

Copy link
Copy Markdown
Contributor

quick update on the skill to optimize the code deployment on Azure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants