Skip to content

Commit dbdb0e1

Browse files
authored
Merge pull request #7823 from microsoft/main
Fetching main for newest changes
2 parents 0d51fa2 + 10199df commit dbdb0e1

1,634 files changed

Lines changed: 89561 additions & 66833 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/AL-Go-Settings.json

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
{
2-
"$schema": "https://raw.githubusercontent.com/microsoft/AL-Go/91c2f1bab7959cffc66fd9513a1d83ec9f641e30/Actions/.Modules/settings.schema.json",
2+
"$schema": "https://raw.githubusercontent.com/microsoft/AL-Go-Actions/v9.0/.Modules/settings.schema.json",
33
"type": "PTE",
44
"templateUrl": "https://github.com/microsoft/AL-Go-PTE@preview",
55
"bcContainerHelperVersion": "preview",
66
"runs-on": "windows-latest",
77
"cacheImageName": "",
88
"UsePsSession": false,
9-
"artifact": "bcinsider/Sandbox/29.0.47140.0//latest",
9+
"artifact": "bcinsider/Sandbox/29.0.49078.0//latest",
1010
"country": "base",
1111
"useProjectDependencies": true,
12+
"incrementalBuilds": {
13+
"onPush": false,
14+
"onPull_Request": true,
15+
"onSchedule": false,
16+
"retentionDays": 30,
17+
"mode": "modifiedApps"
18+
},
1219
"repoVersion": "29.0",
1320
"conditionalSettings": [
1421
{
@@ -131,7 +138,7 @@
131138
]
132139
},
133140
"UpdateALGoSystemFilesEnvironment": "Official-Build",
134-
"templateSha": "ab2dd7a59581956673267c0e5aca5e9f7a1f27da",
141+
"templateSha": "ee6d3d7724013c45767d1b83db2b04f737def7d7",
135142
"commitOptions": {
136143
"messageSuffix": "Related to AB#539394",
137144
"pullRequestAutoMerge": true,

.github/RELEASENOTES.copy.md

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,87 @@
1-
## preview
1+
## v9.0
22

3-
Note that when using the preview version of AL-Go for GitHub, we recommend you Update your AL-Go system files, as soon as possible when informed that an update is available.
3+
### Needs Context in Build job moved from environment variable to file
4+
5+
`NeedsContext` is currently available as an environment variable in the build step of AL-Go. In some cases on repos with a large amount of projects, it's possible for this variable to exceed the max size GitHub allows for such variables. To work around this issue, we now place the contents of `NeedsContext` in a json file, where `NeedsContext` is the path to that file.
6+
7+
If you have any custom processes that uses `NeedsContext`, those needs to be updated to now first read the contents of the json file. The structure of the json is identical to what was previously in the variable, so only extra step is to read the file.
8+
9+
### Added support for workspace compilation
10+
11+
With v28 of Business Central, the ALTool now also provides the ability to compile workspaces of apps. This has the added advantage that the ALTool can compute the dependency graph for the apps in the workspace and compile apps in parallel (if possible). For AL-Go projects with large amounts of apps that can save a lot of time. If you want to try this out you can enable it via the following setting
12+
13+
```json
14+
"workspaceCompilation": {
15+
"enabled": true
16+
}
17+
```
18+
19+
By default apps are compiled sequentially but this can be changed via the parallelism property. This allows you to configure the maximum amount of parallel compilation processes. Set to 0 or -1 to use all available processors.
20+
21+
```json
22+
"workspaceCompilation": {
23+
"enabled": true,
24+
"parallelism": 4
25+
}
26+
```
27+
28+
### Test Projects — split builds and tests for faster feedback
29+
30+
AL-Go now supports **test projects**: a new project type that separates test execution from compilation. A test project does not build any apps itself — instead it depends on one or more regular projects, installs the apps they produce, and runs tests against them.
31+
32+
This lets you re-run tests without waiting for a full recompilation, and makes it easy to organize large repositories where builds and test suites have different scopes or cadences.
33+
34+
**Getting started**
35+
36+
Add a `projectsToTest` setting to the project-level `.AL-Go/settings.json` of an empty project (no `appFolders` or `testFolders`):
37+
38+
```json
39+
{
40+
"projectsToTest": ["build/projects/MyProject"]
41+
}
42+
```
43+
44+
AL-Go will automatically:
45+
46+
- Resolve the dependency so the test project always builds after its target project(s).
47+
- Install the Test Runner, Test Framework, and Test Libraries into the container.
48+
- Run all tests from the installed test apps.
49+
50+
**Key rules**
51+
52+
- A test project must **not** contain buildable code (no `appFolders`, `testFolders`, or `bcptTestFolders`). AL-Go will fail with a clear error if it detects both `projectsToTest` and buildable folders.
53+
- A test project cannot depend on another test project.
54+
- You can target multiple projects: `"projectsToTest": ["build/projects/ProjectA", "build/projects/ProjectB"]`.
55+
- Use full project paths as they appear in the repository.
56+
57+
### Improving error detection and build reliability when downloading project dependencies
58+
59+
The `DownloadProjectDependencies` action now downloads app files from URLs specified in the `installApps` and `installTestApps` settings upfront, rather than validating URLs at build time. This change provides:
60+
61+
- Earlier detection of inaccessible or misconfigured URLs
62+
- Clearer error messages when secrets are missing or URLs are invalid
63+
- Warnings for potential issues like duplicate filenames
64+
65+
### Improve overall performance by postponing projects with no dependants
66+
67+
The time it takes to build projects can vary significantly depending on factors such as whether you are using Linux or Windows, Containers or CompilerFolders, and whether apps are being published or tests are being run.
68+
69+
By default, projects are built according to their dependency order. As soon as all dependencies for a project are satisfied, the project is added to the next layer of jobs.
70+
71+
The new setting `postponeProjectInBuildOrder` allows you to delay long running jobs (f.ex. test runs) with no dependants until the final layer of the build order. This can improve overall build performance by preventing subsequent layers from waiting on projects that take longer to complete but are not required for further dependencies.
472

573
### Issues
674

775
- Attempt to start docker service in case it is not running
876
- NextMajor (v28) fails when downloading dependencies from NuGet-feed
77+
- Issue 2084 Multiple artifacts failure if you re-run failed jobs after flaky tests
78+
- Issue 2085 Projects that doesn't contain both Apps and TestApps are wrongly seen as not built.
79+
- Issue 2086 Postpone jobs, which doesn't have any dependents to the end of the build order.
80+
- Rework input handling of workflow 'Update AL-Go System Files' for trigger 'workflow_call'
81+
82+
### New Settings
83+
84+
- `postponeProjectInBuildOrder` is a new project setting, which will (if set to true) cause the project to be postponed until the last build job when possible. If set on test projects, then all tests can be deferred until all builds have succeeded.
985

1086
## v8.3
1187

.github/workflows/CICD.yaml

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
trackALAlertsInGitHub: ${{ steps.SetALCodeAnalysisVar.outputs.trackALAlertsInGitHub }}
5252
steps:
5353
- name: Dump Workflow Information
54-
uses: microsoft/AL-Go/Actions/DumpWorkflowInfo@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
54+
uses: microsoft/AL-Go-Actions/DumpWorkflowInfo@v9.0
5555
with:
5656
shell: powershell
5757

@@ -62,13 +62,13 @@ jobs:
6262

6363
- name: Initialize the workflow
6464
id: init
65-
uses: microsoft/AL-Go/Actions/WorkflowInitialize@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
65+
uses: microsoft/AL-Go-Actions/WorkflowInitialize@v9.0
6666
with:
6767
shell: powershell
6868

6969
- name: Read settings
7070
id: ReadSettings
71-
uses: microsoft/AL-Go/Actions/ReadSettings@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
71+
uses: microsoft/AL-Go-Actions/ReadSettings@v9.0
7272
with:
7373
shell: powershell
7474
get: type,powerPlatformSolutionFolder,useGitSubmodules,trackALAlertsInGitHub
@@ -82,7 +82,7 @@ jobs:
8282
- name: Read submodules token
8383
id: ReadSubmodulesToken
8484
if: env.useGitSubmodules != 'false' && env.useGitSubmodules != ''
85-
uses: microsoft/AL-Go/Actions/ReadSecrets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
85+
uses: microsoft/AL-Go-Actions/ReadSecrets@v9.0
8686
with:
8787
shell: powershell
8888
gitHubSecrets: ${{ toJson(secrets) }}
@@ -103,7 +103,7 @@ jobs:
103103
104104
- name: Determine Projects To Build
105105
id: determineProjectsToBuild
106-
uses: microsoft/AL-Go/Actions/DetermineProjectsToBuild@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
106+
uses: microsoft/AL-Go-Actions/DetermineProjectsToBuild@v9.0
107107
with:
108108
shell: powershell
109109
maxBuildDepth: ${{ env.workflowDepth }}
@@ -116,23 +116,23 @@ jobs:
116116
117117
- name: Determine Delivery Target Secrets
118118
id: DetermineDeliveryTargetSecrets
119-
uses: microsoft/AL-Go/Actions/DetermineDeliveryTargets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
119+
uses: microsoft/AL-Go-Actions/DetermineDeliveryTargets@v9.0
120120
with:
121121
shell: powershell
122122
projectsJson: '${{ steps.determineProjectsToBuild.outputs.ProjectsJson }}'
123123
checkContextSecrets: 'false'
124124

125125
- name: Read secrets
126126
id: ReadSecrets
127-
uses: microsoft/AL-Go/Actions/ReadSecrets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
127+
uses: microsoft/AL-Go-Actions/ReadSecrets@v9.0
128128
with:
129129
shell: powershell
130130
gitHubSecrets: ${{ toJson(secrets) }}
131131
getSecrets: ${{ steps.DetermineDeliveryTargetSecrets.outputs.ContextSecrets }}
132132

133133
- name: Determine Delivery Targets
134134
id: DetermineDeliveryTargets
135-
uses: microsoft/AL-Go/Actions/DetermineDeliveryTargets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
135+
uses: microsoft/AL-Go-Actions/DetermineDeliveryTargets@v9.0
136136
env:
137137
Secrets: '${{ steps.ReadSecrets.outputs.Secrets }}'
138138
with:
@@ -142,7 +142,7 @@ jobs:
142142

143143
- name: Determine Deployment Environments
144144
id: DetermineDeploymentEnvironments
145-
uses: microsoft/AL-Go/Actions/DetermineDeploymentEnvironments@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
145+
uses: microsoft/AL-Go-Actions/DetermineDeploymentEnvironments@v9.0
146146
env:
147147
GITHUB_TOKEN: ${{ github.token }}
148148
with:
@@ -158,21 +158,21 @@ jobs:
158158
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
159159

160160
- name: Read settings
161-
uses: microsoft/AL-Go/Actions/ReadSettings@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
161+
uses: microsoft/AL-Go-Actions/ReadSettings@v9.0
162162
with:
163163
shell: powershell
164164
get: templateUrl
165165

166166
- name: Read secrets
167167
id: ReadSecrets
168-
uses: microsoft/AL-Go/Actions/ReadSecrets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
168+
uses: microsoft/AL-Go-Actions/ReadSecrets@v9.0
169169
with:
170170
shell: powershell
171171
gitHubSecrets: ${{ toJson(secrets) }}
172172
getSecrets: 'ghTokenWorkflow'
173173

174174
- name: Check for updates to AL-Go system files
175-
uses: microsoft/AL-Go/Actions/CheckForUpdates@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
175+
uses: microsoft/AL-Go-Actions/CheckForUpdates@v9.0
176176
env:
177177
GITHUB_TOKEN: ${{ github.token }}
178178
with:
@@ -241,7 +241,7 @@ jobs:
241241
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
242242

243243
- name: Download artifacts - ErrorLogs
244-
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
244+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
245245
if: (success() || failure())
246246
with:
247247
pattern: '*-*ErrorLogs-*'
@@ -251,7 +251,7 @@ jobs:
251251
- name: Process AL Code Analysis Logs
252252
id: ProcessALCodeAnalysisLogs
253253
if: (success() || failure())
254-
uses: microsoft/AL-Go/Actions/ProcessALCodeAnalysisLogs@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
254+
uses: microsoft/AL-Go-Actions/ProcessALCodeAnalysisLogs@v9.0
255255
with:
256256
shell: powershell
257257

@@ -280,41 +280,41 @@ jobs:
280280
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
281281

282282
- name: Download artifacts
283-
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
283+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
284284
with:
285285
path: '.artifacts'
286286

287287
- name: Read settings
288-
uses: microsoft/AL-Go/Actions/ReadSettings@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
288+
uses: microsoft/AL-Go-Actions/ReadSettings@v9.0
289289
with:
290290
shell: powershell
291291

292292
- name: Determine ArtifactUrl
293293
id: determineArtifactUrl
294-
uses: microsoft/AL-Go/Actions/DetermineArtifactUrl@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
294+
uses: microsoft/AL-Go-Actions/DetermineArtifactUrl@v9.0
295295
with:
296296
shell: powershell
297297

298298
- name: Setup Pages
299299
if: needs.Initialization.outputs.deployALDocArtifact == 1
300-
uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0
300+
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
301301

302302
- name: Build Reference Documentation
303-
uses: microsoft/AL-Go/Actions/BuildReferenceDocumentation@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
303+
uses: microsoft/AL-Go-Actions/BuildReferenceDocumentation@v9.0
304304
with:
305305
shell: powershell
306306
artifacts: '.artifacts'
307307
artifactUrl: ${{ env.artifact }}
308308

309309
- name: Upload pages artifact
310-
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
310+
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
311311
with:
312312
path: ".aldoc/_site/"
313313

314314
- name: Deploy to GitHub Pages
315315
if: needs.Initialization.outputs.deployALDocArtifact == 1
316316
id: deployment
317-
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
317+
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
318318

319319
Deploy:
320320
needs: [ Initialization, Build1, Build ]
@@ -336,12 +336,12 @@ jobs:
336336
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
337337

338338
- name: Download artifacts
339-
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
339+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
340340
with:
341341
path: '.artifacts'
342342

343343
- name: Read settings
344-
uses: microsoft/AL-Go/Actions/ReadSettings@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
344+
uses: microsoft/AL-Go-Actions/ReadSettings@v9.0
345345
with:
346346
shell: ${{ matrix.shell }}
347347
get: type,powerPlatformSolutionFolder
@@ -355,15 +355,15 @@ jobs:
355355
356356
- name: Read secrets
357357
id: ReadSecrets
358-
uses: microsoft/AL-Go/Actions/ReadSecrets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
358+
uses: microsoft/AL-Go-Actions/ReadSecrets@v9.0
359359
with:
360360
shell: ${{ matrix.shell }}
361361
gitHubSecrets: ${{ toJson(secrets) }}
362362
getSecrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext'
363363

364364
- name: Deploy to Business Central
365365
id: Deploy
366-
uses: microsoft/AL-Go/Actions/Deploy@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
366+
uses: microsoft/AL-Go-Actions/Deploy@v9.0
367367
env:
368368
Secrets: '${{ steps.ReadSecrets.outputs.Secrets }}'
369369
with:
@@ -375,7 +375,7 @@ jobs:
375375

376376
- name: Deploy to Power Platform
377377
if: env.type == 'PTE' && env.powerPlatformSolutionFolder != ''
378-
uses: microsoft/AL-Go/Actions/DeployPowerPlatform@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
378+
uses: microsoft/AL-Go-Actions/DeployPowerPlatform@v9.0
379379
env:
380380
Secrets: '${{ steps.ReadSecrets.outputs.Secrets }}'
381381
with:
@@ -398,25 +398,25 @@ jobs:
398398
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
399399

400400
- name: Download artifacts
401-
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
401+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
402402
with:
403403
path: '.artifacts'
404404

405405
- name: Read settings
406-
uses: microsoft/AL-Go/Actions/ReadSettings@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
406+
uses: microsoft/AL-Go-Actions/ReadSettings@v9.0
407407
with:
408408
shell: powershell
409409

410410
- name: Read secrets
411411
id: ReadSecrets
412-
uses: microsoft/AL-Go/Actions/ReadSecrets@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
412+
uses: microsoft/AL-Go-Actions/ReadSecrets@v9.0
413413
with:
414414
shell: powershell
415415
gitHubSecrets: ${{ toJson(secrets) }}
416416
getSecrets: '${{ matrix.deliveryTarget }}Context'
417417

418418
- name: Deliver
419-
uses: microsoft/AL-Go/Actions/Deliver@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
419+
uses: microsoft/AL-Go-Actions/Deliver@v9.0
420420
env:
421421
Secrets: '${{ steps.ReadSecrets.outputs.Secrets }}'
422422
with:
@@ -436,7 +436,7 @@ jobs:
436436

437437
- name: Finalize the workflow
438438
id: PostProcess
439-
uses: microsoft/AL-Go/Actions/WorkflowPostProcess@91c2f1bab7959cffc66fd9513a1d83ec9f641e30
439+
uses: microsoft/AL-Go-Actions/WorkflowPostProcess@v9.0
440440
env:
441441
GITHUB_TOKEN: ${{ github.token }}
442442
with:

0 commit comments

Comments
 (0)