Skip to content

Conversation

ccastrotrejo
Copy link
Contributor

@ccastrotrejo ccastrotrejo commented Sep 10, 2025

Commit Type

  • feature - New functionality

Risk Level

  • High - Major changes, significant user/system impact

What & Why

This PR implements container support for the VS Code Logic Apps extension by removing local dependency management and adding containerized runtime support. The changes include:

  • Removal of binary validation and installation logic for .NET, Node.js, and Azure Functions Core Tools
  • Addition of Azure Functions Core Tools download in the container Dockerfile
  • Simplification of project setup by using system-installed binaries instead of managed dependencies
  • Updated VS Code tasks to use standard commands (dotnet, func) instead of configuration-based paths

Impact of Change

  • Users: Simplified setup experience when using containers - no more dependency management
  • Developers: Cleaner codebase with reduced complexity around binary management
  • System: Container-based workflow with pre-installed runtime dependencies

Test Plan

  • Manual testing completed
  • Unit tests added/updated
  • E2E tests added/updated
  • Tested in: Container development environment

Contributors

@ccastrotrejo

Screenshots/Videos

N/A - Backend infrastructure changes

Copy link

github-actions bot commented Sep 10, 2025

🤖 AI PR Validation Report

PR Review Results

Thank you for your submission! Here's detailed feedback on your PR title and body compliance:

PR Title

  • Current: feat(vscode): add container support for extension dependencies - [Do not merge]
  • Issue: The title is descriptive and follows the feat(vscode): ... convention. The "[Do not merge]" tag is helpful for reviewers. No issue found.
  • Recommendation: No changes needed. If ready to merge, remove "[Do not merge]".

Commit Type

  • Properly selected (feature - New functionality).
  • Only one type selected, which is correct.

Risk Level

  • Risk is set to "High" in both the PR body and label (Risk:High).
  • This matches the code diff, which has extensive, breaking and architectural changes. No mismatch.

What & Why

  • Current:

    This PR implements container support for the VS Code Logic Apps extension by removing local dependency management and adding containerized runtime support. The changes include:

  • Removal of binary validation and installation logic for .NET, Node.js, and Azure Functions Core Tools
  • Addition of Azure Functions Core Tools download in the container Dockerfile
  • Simplification of project setup by using system-installed binaries instead of managed dependencies
  • Updated VS Code tasks to use standard commands (dotnet, func) instead of configuration-based paths
  • Issue: All required context is provided, including specific technical highlights.
  • Recommendation: No action needed.

Impact of Change

  • Clear impact statements for Users, Developers, and System. Indicates major setup and workflow alterations.
  • Recommendation:
    • Users: No additional notes. The section is clear.
    • Developers: No additional notes. Coverage is precise.
    • System: No additional notes.

Test Plan

  • Manual testing is marked completed. Unit/E2E are not checked, which matches diff (heavy infrastructure/arch change that may be hard to fully automate immediately). Also notes "Tested in container development environment".
  • Test plan is adequate, but as a nudge: if feasible, recommend incrementally adding more automation as container workflows stabilize.

Contributors

  • Single contributor (@ccastrotrejo) listed.
  • No issues. As a reminder: in future, tag PMs/designers if they contributed ideas/review.

Screenshots/Videos

  • Marked "N/A - Backend infrastructure changes". This is correct given non-UI nature of changes.

Summary Table

Section Status Recommendation
Title If ready to merge, remove [Do not merge]
Commit Type Correct
Risk Level Correct
What & Why Correct
Impact of Change Correct
Test Plan Consider further automation if feasible
Contributors Tag additional contributors if applicable
Screenshots/Videos Correct

All required sections are complete and correct. This PR passes title and body review.

If this PR is no longer "do not merge" status, please update the title before merging.

If this change impacts rollout/documentation, consider communicating out to relevant users/developers ahead of time due to the scope/breaking nature of containerization.



Last updated: Mon, 13 Oct 2025 18:43:05 GMT

@ccastrotrejo ccastrotrejo marked this pull request as ready for review September 15, 2025 14:28
@Copilot Copilot AI review requested due to automatic review settings September 15, 2025 14:28
@ccastrotrejo ccastrotrejo changed the title Ccastrotrejo/container extension feat(vs-code-designer): add container support with Azure Functions Core Tools Sep 15, 2025
@ccastrotrejo ccastrotrejo added the Risk:High High risk change requiring careful review label Sep 15, 2025
Copy link
Contributor

@Copilot Copilot AI left a comment

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 implements containerization support for the Azure Logic Apps VS Code extension while removing deprecated dependency management features. The changes streamline the extension by eliminating binary validation and installation functionality, replacing it with Docker container support for development environments.

Key changes:

  • Removes binary dependency management system for Node.js, .NET SDK, and Azure Functions Core Tools
  • Adds Docker container support with devcontainer configuration
  • Simplifies extension configuration by removing numerous settings and commands related to binary validation

Reviewed Changes

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

Show a summary per file
File Description
apps/vs-code-designer/src/package.json Removes dependency validation commands and configuration settings
apps/vs-code-designer/src/onboarding.ts Deletes the onboarding module that handled binary installation
apps/vs-code-designer/src/main.ts Replaces binary installation with direct design-time API startup
apps/vs-code-designer/src/container/ Adds Docker container configuration files for development
Multiple utility files Updates hardcoded binary paths to use standard command names

@ccastrotrejo ccastrotrejo changed the title feat(vs-code-designer): add container support with Azure Functions Core Tools feat(vscode): add container support with Azure Functions Core Tools Sep 15, 2025
@ccastrotrejo ccastrotrejo changed the title feat(vscode): add container support with Azure Functions Core Tools feat(vscode): add container support for extension dependencies Sep 15, 2025
@ccastrotrejo ccastrotrejo requested a review from Copilot October 3, 2025 19:25
Copy link
Contributor

@Copilot Copilot AI left a comment

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 94 out of 94 changed files in this pull request and generated 4 comments.

@ccastrotrejo ccastrotrejo requested a review from Copilot October 8, 2025 15:53
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@ccastrotrejo ccastrotrejo requested a review from Copilot October 10, 2025 15:48
Copy link
Contributor

@Copilot Copilot AI left a comment

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 100 out of 100 changed files in this pull request and generated 7 comments.

{
label: 'generateDebugSymbols',
command: '${config:azureLogicAppsStandard.dotnetBinaryPath}',
command: 'dotnet',
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

[nitpick] Consider making these command names configurable through constants to maintain consistency across the codebase and ease future updates.

Copilot uses AI. Check for mistakes.

Comment on lines +116 to +117
export const managementApiPrefix = 'runtime/webhooks/workflow/api/management';
export const designerStartApi = 'runtime/webhooks/workflow/api/management/operationGroups';
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

The removal of leading slash from API paths could cause issues when concatenating URLs. Ensure all usages properly handle the path joining.

Suggested change
export const managementApiPrefix = 'runtime/webhooks/workflow/api/management';
export const designerStartApi = 'runtime/webhooks/workflow/api/management/operationGroups';
export const managementApiPrefix = '/runtime/webhooks/workflow/api/management';
export const designerStartApi = '/runtime/webhooks/workflow/api/management/operationGroups';

Copilot uses AI. Check for mistakes.

const solutionName = 'Tests'; // This will create "Tests.sln"
const solutionFile = path.join(testsDirectory, `${solutionName}.sln`);
const dotnetBinaryPath = getGlobalSetting(dotNetBinaryPathSettingKey);
const dotnetCommand = 'dotnet';
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

[nitpick] This hardcoded command should use a constant from the constants file to maintain consistency with other command references.

Copilot uses AI. Check for mistakes.

Comment on lines +78 to +81
const versions = '8';

// Prioritize "LTS", then "Current", then "Preview"
const netVersions: string[] = ['8', '6', '3', '2', '9', '10'];
const netVersions: string[] = ['8', '6'];
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

[nitpick] The hardcoded version strings should be moved to constants to make version management more maintainable.

Copilot uses AI. Check for mistakes.

Comment on lines 27 to 31
export async function getPublicUrl(url: string) {
const local = vscode.Uri.parse(url);
const external = await vscode.env.asExternalUri(local);
return external.toString(); // use this in webviews, auth callbacks, logs, etc.
}
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

Add JSDoc documentation explaining the purpose of this function and when it should be used, especially in container environments.

Copilot uses AI. Check for mistakes.

if (context.workspacePath && context.workspaceFilePath.endsWith('.code-workspace') && fs.existsSync(context.workspaceFilePath)) {
await this.updateWorkspaceFile(context);
context.openBehavior = OpenBehavior.addToWorkspace;
context.openBehavior = OpenBehavior.openInNewWindow;
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

[nitpick] The hardcoded change from 'addToWorkspace' to 'openInNewWindow' should be documented or made configurable, as this changes user workflow behavior.

Suggested change
context.openBehavior = OpenBehavior.openInNewWindow;
// [NOTE] Default behavior changed from 'addToWorkspace' to 'openInNewWindow'.
// To restore previous behavior, set 'context.openBehaviorPreference' to 'OpenBehavior.addToWorkspace'.
context.openBehavior = context.openBehaviorPreference ?? OpenBehavior.openInNewWindow;

Copilot uses AI. Check for mistakes.

function osSupportsVersion(version: FuncVersion | undefined): boolean {
return version !== FuncVersion.v1 || process.platform === Platform.windows;
function osSupportsVersion(): boolean {
return process.platform === Platform.windows;
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

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

This function now only returns true for Windows platform, which may cause issues on Linux/Mac container environments where the function is still called.

Suggested change
return process.platform === Platform.windows;
// Assume all platforms are supported unless there is a known limitation.
return true;

Copilot uses AI. Check for mistakes.

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

Labels

pr-validated Risk:High High risk change requiring careful review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant