Skip to content

Feature: Global continuousDeployment setting to disable automatic CD across all environments #2172

@StefanMaron

Description

@StefanMaron

Problem

There is currently no way to disable continuous deployment globally. The only option is to set ContinuousDeployment: false inside each DeployTo<environmentname> block — one entry per environment per repository.

This is a significant gap for anyone who:

  • Uses GitHub environments (created manually or by AL-Go) but wants deployments to be purely manual (via Publish To Environment)
  • Manages many repositories from organization-level settings (ALGoOrgSettings)
  • Wants to set a safe org-wide default and selectively opt specific environments back in

Without this, the only workarounds are:

  1. Enumerate every environment name across every repo in ALGoOrgSettings with per-env continuousDeployment: false — fragile, verbose, breaks with new environments
  2. Change CICDPushBranches to a dummy value — disables the entire CICD workflow, not just deployment
  3. Use GitHub environment branch protection policies — also affects the Publish To Environment workflow

Proposed Solution

Add a top-level continuousDeployment setting that acts as a global default for all environments.

Priority order (lowest to highest):

  1. Name-based convention ((PROD) / (FAT) suffix → false, otherwise → true) — existing default
  2. Global continuousDeployment setting ← new
  3. Per-environment DeployTo<name>.ContinuousDeployment ← existing, still wins

Example usage in ALGoOrgSettings:

{
  "continuousDeployment": false
}

This disables automatic CD for all environments in all repos in the org. Individual environments can still opt in:

{
  "continuousDeployment": false,
  "DeployToProduction": { "continuousDeployment": true }
}

The Publish To Environment workflow is unaffected — it uses type: 'Publish' which ignores continuousDeployment entirely.

Implementation

The change is minimal — 4 lines in DetermineDeploymentEnvironments.ps1 after per-environment settings are resolved:

if ($null -eq $deploymentSettings.continuousDeployment -and $null -ne $settings.continuousDeployment) {
    $deploymentSettings.continuousDeployment = $settings.continuousDeployment
}

Plus adding the setting to defaults and schema. Full implementation in the linked PRs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions