Skip to content

[CoR] Make deployment strategy service-specific and Flex-safe #1899

Description

@nturinski

Problem

The deployment plan currently has one top-level deployStrategy, even though a project can contain application services with different deployment channels, such as Static Web Apps, Azure Functions Flex Consumption, App Service, and container hosts. Generic language-level Oryx guidance can consequently be applied to Flex Functions, where settings such as SCM_DO_BUILD_DURING_DEPLOYMENT and ENABLE_ORYX_BUILD are invalid.

Proposed work

  • Add deployStrategy to each PlannedService.
  • Introduce explicit channel-oriented values, for example:
    • functions-flex-package
    • appservice-oryx
    • appservice-startup-install
    • container-image
    • static-content
  • Retain the current top-level strategy temporarily as a deprecated compatibility fallback for older plan artifacts.
  • Update scaffold/deploy agents to consume each service's strategy and apply legacy Oryx settings only to compatible App Service targets.
  • Add hard validation that rejects Oryx/SCM build settings for Flex Consumption.
  • Update fixtures and documentation to remove ambiguous descriptions such as labeling a Flex package flow oryx-auto.

Likely implementation surfaces include:

  • resources/agents/azure-deploy/prepare/references/prepare-schemas.ts
  • resources/agents/azure-deploy/prepare/references/deploy-strategy.md
  • resources/agents/azure-deploy/scaffold/references/bicep-functions-flex.md
  • resources/agents/azure-deploy/deploy/references/code-deployment-functions-flex.md
  • test/testProjects/copilotOnRails/scrapbook/prepare-plan.json

Acceptance criteria

  • Every application service can carry its own deployment strategy.
  • Mixed-hosting projects use the correct strategy for each service.
  • Flex Consumption plans reject Oryx and SCM remote-build settings before provisioning.
  • Existing plan artifacts with only the top-level strategy remain readable during the compatibility period.
  • Newly generated plans use service-level strategies.
  • Tests cover mixed-service plans, legacy fallback, and invalid Flex settings.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    CoRCopilot on Rails

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions