From cc9d6926f565b35cfcb5d6ca4d7f904421c25acf Mon Sep 17 00:00:00 2001 From: Florian Date: Wed, 15 Jul 2026 17:34:33 +0200 Subject: [PATCH 1/3] Use cacheImageName for local development environments --- Actions/AL-Go-Helper.ps1 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Actions/AL-Go-Helper.ps1 b/Actions/AL-Go-Helper.ps1 index fdda3213fd..1287f1ca5c 100644 --- a/Actions/AL-Go-Helper.ps1 +++ b/Actions/AL-Go-Helper.ps1 @@ -1825,11 +1825,16 @@ function CreateDevEnv { $sharedFolder = $baseFolder } + $imageName = "" + if ($kind -eq "local") { + $imageName = $settings.cacheImageName + } + Run-AlPipeline @runAlPipelineParams ` -accept_insiderEula:$accept_insiderEula ` -vsixFile $settings.vsixFile ` -pipelinename $workflowName ` - -imageName "" ` + -imageName $imageName ` -memoryLimit $settings.memoryLimit ` -baseFolder $projectFolder ` -sharedFolder $sharedFolder ` From 2eba29f7a1a5be3178ff1a2f1c434c771e897d7c Mon Sep 17 00:00:00 2001 From: Florian Date: Wed, 22 Jul 2026 17:52:46 +0200 Subject: [PATCH 2/3] Update RELEASENOTES with localDevEnv cacheImageName Added note about local development environments using cacheImageName for artifact-specific image reuse. --- RELEASENOTES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1aa6e3bdfa..a454ce0d55 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,6 +2,11 @@ Workspace compilation now finds altool both in the platform-specific subfolder (`compiler/extension/bin/win32` or `.../linux`) and directly under `compiler/extension/bin`, so a `vsixFile` using the flat (framework-dependent / marketplace) layout no longer fails with "Could not find AL tool in the compiler folder". URL-based `customCodeCops` are likewise downloaded to the flat `bin` folder when no `Analyzers` subfolder is present. The aldoc tool used for reference documentation is resolved the same way, falling back to the flat `bin` folder when no platform subfolder is present. +### Local development environments use cacheImageName + +localDevEnv now passes the configured cacheImageName to Run-AlPipeline, allowing BcContainerHelper to reuse artifact-specific images. +To retain the previous behavior, set `cacheImageName` to an empty string in .AL-Go/localDevEnv.settings.json. + ### Issues - Issue 2285 - CheckForUpdates now handles settings file `$schema` reordering in a PowerShell 5-safe way to avoid writing invalid entries like `"*": null` to settings JSON files. From 66ed2f39ef11ffa84d8f442dd458bbbe76898ab0 Mon Sep 17 00:00:00 2001 From: Florian Rottke Date: Thu, 27 Aug 2026 21:33:18 +0200 Subject: [PATCH 3/3] Update settings schema and documentation for cacheImageName usage in local development --- Actions/.Modules/settings.schema.json | 3 ++- Actions/AL-Go-Helper.ps1 | 2 +- RELEASENOTES.md | 10 +++++----- Scenarios/settings.md | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Actions/.Modules/settings.schema.json b/Actions/.Modules/settings.schema.json index 4a1cd415d3..a1ac71ab8b 100644 --- a/Actions/.Modules/settings.schema.json +++ b/Actions/.Modules/settings.schema.json @@ -466,7 +466,8 @@ "description": "The shell to be used for the GitHub runner. See https://aka.ms/ALGoSettings#githubrunnershell" }, "cacheImageName": { - "type": "string" + "type": "string", + "description": "When using self-hosted runners or localDevEnv, cacheImageName specifies the prefix for the docker image created for increased performance. Set to an empty string to retain the previous local-development behavior. See https://aka.ms/ALGoSettings#cacheimagename" }, "cacheKeepDays": { "type": "number", diff --git a/Actions/AL-Go-Helper.ps1 b/Actions/AL-Go-Helper.ps1 index 1287f1ca5c..209b2a399a 100644 --- a/Actions/AL-Go-Helper.ps1 +++ b/Actions/AL-Go-Helper.ps1 @@ -1828,7 +1828,7 @@ function CreateDevEnv { $imageName = "" if ($kind -eq "local") { $imageName = $settings.cacheImageName - } + } Run-AlPipeline @runAlPipelineParams ` -accept_insiderEula:$accept_insiderEula ` diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 40a2a9faf3..20dd0a0299 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,6 +2,11 @@ The starter Azure Data Explorer dashboard now includes dedicated views for workflow reliability, run exploration, test quality, workflow duration, runner efficiency, and AL-Go maintenance. It also provides repository, workflow, branch, and repository-type filtering, clearer empty states, and repository-level runtime supportability information. +### Local development environments use cacheImageName + +localDevEnv now passes the configured cacheImageName to Run-AlPipeline, allowing BcContainerHelper to reuse artifact-specific images. +To retain the previous behavior, set `cacheImageName` to an empty string in .AL-Go/localDevEnv.settings.json. + ## v9.2 ### New `doNotPerformUpgrade` setting @@ -12,11 +17,6 @@ AL-Go now supports a new `doNotPerformUpgrade` setting that is passed through to Workspace compilation now finds altool both in the platform-specific subfolder (`compiler/extension/bin/win32` or `.../linux`) and directly under `compiler/extension/bin`, so a `vsixFile` using the flat (framework-dependent / marketplace) layout no longer fails with "Could not find AL tool in the compiler folder". URL-based `customCodeCops` are likewise downloaded to the flat `bin` folder when no `Analyzers` subfolder is present. The aldoc tool used for reference documentation is resolved the same way, falling back to the flat `bin` folder when no platform subfolder is present. -### Local development environments use cacheImageName - -localDevEnv now passes the configured cacheImageName to Run-AlPipeline, allowing BcContainerHelper to reuse artifact-specific images. -To retain the previous behavior, set `cacheImageName` to an empty string in .AL-Go/localDevEnv.settings.json. - ### `failOn: newWarning` now works with workspace compilation Previously, the `failOn: newWarning` setting (which fails a pull request when it introduces new AL compiler warnings) only took effect when compiling in a container or compiler folder. It had no effect when `workspaceCompilation` was enabled, because the new-warning comparison only ran in the `RunPipeline` action, whereas workspace compilation produces the compiler output in the `CompileApps` action. The check now also runs in `CompileApps`, so `failOn: newWarning` is honored with workspace compilation. diff --git a/Scenarios/settings.md b/Scenarios/settings.md index c0118f92d4..ddbc694ce4 100644 --- a/Scenarios/settings.md +++ b/Scenarios/settings.md @@ -126,7 +126,7 @@ The repository settings are only read from the repository settings file (.github | alwaysBuildAllProjects (**deprecated**) | This setting only makes sense if the repository is setup for multiple projects.
Standard behavior of the CI/CD workflow is to only build the projects, in which files have changes when running the workflow due to a push or a pull request | false | | fullBuildPatterns | Use this setting to list important files and folders. Changes to any of these files and folders would trigger a full Pull Request build (all AL-Go projects will be built).
*Examples*:
1. Specifying `fullBuildPatterns` as `[ "Build/*" ]` means that any changes from a PR to the `Build` folder would trigger a full build.
2. Specifying `fullBuildPatterns` as `[ "*" ]` means that any changes from a PR would trigger a full build and it is equivalent to setting `alwaysBuildAllProjects` to `true`. | [ ] | | skipUpgrade | This setting is used to signal to the pipeline to NOT run upgrade and ignore previous releases of the app. | false | -| cacheImageName | When using self-hosted runners, cacheImageName specifies the prefix for the docker image created for increased performance | my | +| cacheImageName | When using self-hosted runners or localDevEnv, cacheImageName specifies the prefix for the docker image created for increased performance. Set cacheImageName in `localDevEnv.settings.json` to an empty string to retain the previous local-development behavior. | my | | cacheKeepDays | When using self-hosted runners, cacheKeepDays specifies the number of days docker image are cached before cleaned up when running the next pipeline.
Note that setting cacheKeepDays to 0 will flush the cache before every build and will cause all other running builds using agents on the same host to fail. | 3 | | assignPremiumPlan | Setting assignPremiumPlan to true in your project setting file, causes the build container to be created with the AssignPremiumPlan set. This causes the auto-created user to have Premium Plan enabled. This setting is needed if your tests require premium plan enabled. | false | | enableTaskScheduler | Setting enableTaskScheduler to true in your project setting file, causes the build container to be created with the Task Scheduler running. | false |