microsoft / microsoft/AL-Go

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

Open
#2,172 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

stale
Dominant language
PowerShell
Stars
506
Forks
203
Avg merge
4d 22h
Merged PRs (30d)
6

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with DetermineDeploymentEnvironments.ps1 and trace how per-environment settings and the existing name-based default are resolved. Then inspect the settings defaults and schema referenced in the issue; the work is done when a global continuousDeployment value supplies the default, per-environment values take precedence, and Publish To Environment remains unaffected.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, powershell
Domain
ci-cd, devops
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.