Open jonaswre opened 3 days ago
As described on https://aka.ms/algosettings#useCompilerFolder - you need to also set doNotPublishApps
in order to get a performance enhancement. I tried to reproduce the issue you are talking about here - but cannot:
This repo has 3 apps and one is dependent on another:
https://github.com/BusinessCentralApps/GHP-Common/actions/runs/11511476130/job/32044989671
Building using CompilerFolder without doNotPublishApps.
But, you are right that we should wait with the creation of the container until we actually need it.
Now, I think I was able to repro this - the problem is when you have two repositories with apps with dependencies - then the compilation works, but the deployment fails. Is this the problem you are referring to? https://github.com/BusinessCentralApps/GHP-W1/actions/runs/11511743372/job/32045671301
I don't think its the same error. Our error happens in "installing previous app"
Maybe the diffrence is that we use useProjectDependencies. App A and App B are in diffrent projects.
This is the full error
_____ _ _ _ _ _
|_ _| | | | | (_) (_)
| | _ __ ___| |_ __ _| | |_ _ __ __ _ _ __ _ __ _____ ___ ___ _ _ ___ __ _ _ __ _ __ ___
| | | '_ \/ __| __/ _` | | | | '_ \ / _` | | '_ \| '__/ _ \ \ / / |/ _ \| | | / __| / _` | '_ \| '_ \/ __|
_| |_| | | \__ \ || (_| | | | | | | | (_| | | |_) | | | __/\ V /| | (_) | |_| \__ \ | (_| | |_) | |_) \__ \
|_____|_| |_|___/\__\__,_|_|_|_|_| |_|\__, | | .__/|_| \___| \_/ |_|\___/ \__,_|___/ \__,_| .__/| .__/|___/
__/ | | | | | | |
|___/ |_| |_| |_|
Publishing C:\ProgramData\BcContainerHelper\Extensions\bcBeyondAttributesBridge11403259053\f44aed27-7708-4360-a1fc-b600a69a9643\BEYONDIT GmbH_BeyondRecordSearchAttributesBridge_20.0.57.0.app
Extension compilation failed
error AL1024: A package with publisher 'BEYONDIT GmbH', name 'BeyondRecordSearch', and a version compatible with '20.0.0.0' could not be loaded. Symbols for the requested app BeyondRecordSearch by BEYONDIT GmbH 20.0.0.0 could not be found in the database.
error AL1024: A package with publisher 'BEYONDIT GmbH', name 'BeyondAttributesCore', and a version compatible with '1.0.0.0' could not be loaded. Symbols for the requested app BeyondAttributesCore by BEYONDIT GmbH 1.0.0.0 could not be found in the database.
src/RecordSearchEvents.Codeunit.al(3,54): error AL0118: The name '"BYD RS Record Search Mgt."' does not exist in the current context.
src/ServiceItemSearch.Codeunit.al(16,32): error AL0185: Table 'BYD AT Attribute Value Mapping' is missing
src/ServiceItemSearch.Codeunit.al(23,44): error AL0185: Table 'BYD RS Record Search Column' is missing
src/RecordSearchEvents.Codeunit.al(4,89): error AL0185: Interface 'BYD RS IRecordSearchProvider' is missing
src/ServiceItemSearch.Codeunit.al(44,100): error AL0185: Table 'BYD RS Record Search Column' is missing
src/ServiceItemSearch.Codeunit.al(44,166): error AL0185: Table 'BYD RS Record Search Filter' is missing
src/ServiceItemSearch.Codeunit.al(44,233): error AL0185: Table 'BYD RS Record Search Sorting' is missing
src/ServiceItemSearch.Codeunit.al(44,302): error AL0185: Table 'BYD RS Record Search Row Value' is missing
src/ServiceItemSearch.Codeunit.al(47,32): error AL0185: Table 'BYD AT Attribute Value Mapping' is missing
src/ServiceItemSearch.Codeunit.al(107,118): error AL0185: Table 'BYD RS Record Search Column' is missing
src/ServiceItemSearch.Codeunit.al(117,149): error AL0185: Table 'BYD RS Record Search Row Value' is missing
src/ServiceItemSearch.Codeunit.al(128,61): error AL0185: Table 'BYD AT Attribute Value Mapping' is missing
src/ServiceItemSearch.Codeunit.al(128,120): error AL0185: Table 'BYD RS Record Search Column' is missing
src/ServiceItemSearch.Codeunit.al(128,186): error AL0185: Table 'BYD RS Record Search Filter' is missing
src/ServiceItemSearch.Codeunit.al(128,253): error AL0185: Table 'BYD RS Record Search Sorting' is missing
src/ServiceItemQuery.Query.al(39,54): error AL0185: Table 'BYD AT Attribute Value Mapping' is missing
src/ServiceItemQuery.Query.al(41,32): error AL0171: The property value 'Id = Service_Item."BYD RSAB RecordId"' on property 'DataItemLink' is not valid.
src/ServiceItemSearch.Codeunit.al(1,61): error AL0185: Interface 'BYD RS IRecordSearchProvider' is missing
src/ServiceItemQuery.Query.al(43,40): error AL0345: The source of a Column or Filter must be a field defined on the table referenced by its parent DataItem
src/ServiceItemQuery.Query.al(43,24): error AL0353: A Column must have a valid data source or have the 'Method' property set to 'Count'
src/ServiceItemQuery.Query.al(47,46): error AL0345: The source of a Column or Filter must be a field defined on the table referenced by its parent DataItem
src/ServiceItemQuery.Query.al(47,24): error AL0353: A Column must have a valid data source or have the 'Method' property set to 'Count'
Exception Script Stack Trace:
at <ScriptBlock>, <No file>: line 41
PowerShell Call Stack:
at Invoke-ScriptInBcContainer, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\ContainerHandling\Invoke-ScriptInNavContainer.ps1: line 71
at <ScriptBlock>, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Publish-NavContainerApp.ps1: line 379
at Publish-BcContainerApp, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Publish-NavContainerApp.ps1: line 154
at <ScriptBlock>, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Run-AlPipeline.ps1: line 873
at <ScriptBlock>, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Run-AlPipeline.ps1: line 2208
at <ScriptBlock>, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Run-AlPipeline.ps1: line 2189
at <ScriptBlock>, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Run-AlPipeline.ps1: line 2184
at <ScriptBlock>, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Run-AlPipeline.ps1: line 977
at Run-AlPipeline, C:\ProgramData\BcContainerHelper\6.0.26\BcContainerHelper\AppHandling\Run-AlPipeline.ps1: line 939
at <ScriptBlock>, C:\3\_work\_actions\microsoft\AL-Go-Actions\v6.0\RunPipeline\RunPipeline.ps1: line 391
at <ScriptBlock>, C:\3\_work\_temp\403ce9da-ac3d-4103-807e-b6991c4f0d66.ps1: line 3
at <ScriptBlock>, C:\3\_work\_actions\microsoft\AL-Go-Actions\v6.0\Invoke-AlGoAction.ps1: line 17
at <ScriptBlock>, C:\3\_work\_temp\403ce9da-ac3d-4103-807e-b6991c4f0d66.ps1: line 2
at <ScriptBlock>, <No file>: line 1
Container Free Physical Memory: 8.3Gb
Disk C: Free 124Gb from 127Gb
Services in container bcBeyondAttributesBridge11403259053:
- MicrosoftDynamicsNavServer$BC is Running
- MSSQL$SQLEXPRESS is Running
Publish-BcContainerApp Telemetry Correlation Id: 66d28d85-e005-4071-9f23-62d84c7d4eb1
And regarding the performance improvement. I read the docs but I wanted to see if it would improve performance in failure szenarios. Because it would fail before the container is created to skipping the unnessary time of container creation.
BeyondRecordSearch was build in Build1 BeyondAttributeCore is build in another repo and downloaded from nuget.
Will investigate
Will let you know when you try out a test branch on one of your own forks or branches.
AL-Go version
6.0
Describe the issue
Hi,
I've enabled useCompilerFolder to try and achieve faster failures when the app compilation fails.
That's didn't seem to work when your apps have dependencies.
We have App B which depends on App A. App A is correctly downloaded from our internal Nuget Feed the compilation works correct. But when trying to install the previous version of App B the Action fails with the error that required objects are missing.
We had the same error when upgrading to AL-GO v6 when only the symbols for App A where resolved from the Microsoft feeds.So my best guess is that the useCompileFolder Option turns app files into symbols. I checked to see App A was resolved in the correct version from our feed and was present as a full app.
Removing the useCompileFolder option fixed the error.
Expected behavior
Well useCompileFolder should not create a state where action fail. Secondly it would be good to be able to fail fast in case of compilation errors. Pretty wasteful to spin up a docker container only to realize it not even compiling.
Steps to reproduce
Create 2 Apps which depend on each other. And then enable useCompileFolder.
Additional context (logs, screenshots, etc.)
No response