Skip to content

Update NodeBuilder to Support Deployment of Nodejs Projects#30

Merged
JesuTerraz merged 4 commits into
mainfrom
users/jterrazas/fix-nodebuilder
Nov 21, 2025
Merged

Update NodeBuilder to Support Deployment of Nodejs Projects#30
JesuTerraz merged 4 commits into
mainfrom
users/jterrazas/fix-nodebuilder

Conversation

@JesuTerraz

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings November 19, 2025 19:30
@JesuTerraz JesuTerraz requested review from a team as code owners November 19, 2025 19:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This pull request updates the NodeBuilder to support deployment of Node.js projects, bringing it to feature parity with the PythonBuilder. The key improvements include adding environment variable conversion from .env files to Azure App Settings, refactoring common deployment logic into a shared BuilderHelper class, and enhancing the Oryx manifest generation to support build commands.

  • Refactored duplicate ExecuteWithOutputAsync and ConvertEnvToAzureAppSettings logic from platform-specific builders into a new shared BuilderHelper class
  • Extended the IPlatformBuilder interface to include ConvertEnvToAzureAppSettingsAsync for all platform builders
  • Enhanced Node.js deployment with .deployment file creation and improved build command handling in the Oryx manifest
  • Updated deployment workflow to call environment variable conversion for all platforms, not just Python

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
src/Microsoft.Agents.A365.DevTools.Cli/Services/Helpers/BuilderHelper.cs New helper class containing shared deployment logic for environment variable conversion and command execution
src/Microsoft.Agents.A365.DevTools.Cli/Services/IPlatformBuilder.cs Added ConvertEnvToAzureAppSettingsAsync method to interface for consistent environment variable handling
src/Microsoft.Agents.A365.DevTools.Cli/Services/NodeBuilder.cs Refactored to use BuilderHelper, added ConvertEnvToAzureAppSettingsAsync implementation, and improved build artifact deployment
src/Microsoft.Agents.A365.DevTools.Cli/Services/PythonBuilder.cs Refactored to use BuilderHelper for common deployment operations
src/Microsoft.Agents.A365.DevTools.Cli/Services/DotNetBuilder.cs Refactored to use BuilderHelper and added ConvertEnvToAzureAppSettingsAsync stub (returns true as .NET doesn't need it)
src/Microsoft.Agents.A365.DevTools.Cli/Services/DeploymentService.cs Updated deployment workflow to call ConvertEnvToAzureAppSettingsAsync for all platforms, not just Python
src/Microsoft.Agents.A365.DevTools.Cli/Models/OryxManifest.cs Added BuildCommand property to support platform-specific build commands in manifest generation

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/NodeBuilder.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/DeploymentService.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/NodeBuilder.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/Helpers/BuilderHelper.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/IPlatformBuilder.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/NodeBuilder.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/Helpers/BuilderHelper.cs Outdated
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/PythonBuilder.cs

@rahuldevikar761 rahuldevikar761 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Let's make sure to use toml or requirements and if we support both, then lets try to see see how we should resolve.

mengyimicro
mengyimicro previously approved these changes Nov 21, 2025
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Models/OryxManifest.cs Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 9 comments.

Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/NodeBuilder.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/NodeBuilder.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Models/OryxManifest.cs
Comment thread src/Microsoft.Agents.A365.DevTools.Cli/Services/DotNetBuilder.cs
@JesuTerraz JesuTerraz merged commit 9e29b9d into main Nov 21, 2025
2 checks passed
@JesuTerraz JesuTerraz deleted the users/jterrazas/fix-nodebuilder branch November 21, 2025 23:07
sellakumaran pushed a commit that referenced this pull request Feb 27, 2026
* Copy correct files into publish path + set up oryx manifest for nodejs

* upload env variables for nodejs with refactor of common builder code

* copilot suggestions

* fix indentation

---------

Co-authored-by: Jesus Terrazas <jterrazas@microsoft.com>
sellakumaran added a commit that referenced this pull request Jun 15, 2026
… GET stub in test

- Collapse multi-line XML <summary>/inline comment blocks to a one-line why plus issue ref (pr-code-reviewer #30).

- Stub the initial GET appRoleAssignments call explicitly in the Graph-and-az-rest-both-fail test so it no longer relies on BuildMockExecutor's default.
sellakumaran added a commit that referenced this pull request Jun 15, 2026
…terminism rule

- pr-code-reviewer #30: mandatory-emit so the comment-density sweep is reported every run, not dropped as low-severity noise.

- pr-code-reviewer #32: flag a test that relies on a shared mock-builder default instead of stubbing the call explicitly.

- review-pr SKILL: read the working-tree copy of the rule files so a PR that adds a review rule is checked by that rule in the same run.
sellakumaran added a commit that referenced this pull request Jun 15, 2026
…ted (#461)

* Fix #460: skip redundant agent-identity S2S grant when role is inherited

When inheritable permissions are configured (allAllowed) and the blueprint SP
holds the app roles, the agent identity inherits them automatically — the same
basis the OBO/delegated path already relies on. The direct grant on the agent
identity SP was therefore redundant and, when the CLI token cannot write app
roles, produced a spurious "Action Required" PowerShell block on an otherwise
successful Global Admin run.

- Skip the per-identity grant (and the PowerShell prompt) when the blueprint
  grant and inheritance both succeeded; report the inherited grant as Granted.
- When a direct grant is still needed (developer / non-inherited path), retry
  via az rest before falling back to PowerShell, matching the blueprint grant.
- Correct stale README/CHANGELOG claim that Phase 2a/2b are always skipped for
  non-DW agents (untrue since #421).
- Add review-time checks for comment-essay and CHANGELOG crispness
  (pr-code-reviewer #30/#31, review-pr SKILL) and codify both in CLAUDE.md and
  copilot-instructions.

Verified live: setup completes cleanly with no PowerShell block, and
query-entra reports the Observability app role granted on the blueprint SP with
effective inheritance OK.

* Address review comments on #461: crisp doc-comments; explicit az rest GET stub in test

- Collapse multi-line XML <summary>/inline comment blocks to a one-line why plus issue ref (pr-code-reviewer #30).

- Stub the initial GET appRoleAssignments call explicitly in the Graph-and-az-rest-both-fail test so it no longer relies on BuildMockExecutor's default.

* Strengthen PR review tooling: mandatory comment-density emit, test-determinism rule

- pr-code-reviewer #30: mandatory-emit so the comment-density sweep is reported every run, not dropped as low-severity noise.

- pr-code-reviewer #32: flag a test that relies on a shared mock-builder default instead of stubbing the call explicitly.

- review-pr SKILL: read the working-tree copy of the rule files so a PR that adds a review rule is checked by that rule in the same run.
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