[main] Update AL-Go System Files from microsoft/AL-Go-AppSource@preview - 94d3512cb617d22d7086b61c23a6c826e50163cf #19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
v7.0
Issues
Page Scripting visualizer
Page scripting tests have been available for AL-Go for GitHub for a while but required manual inspection of the Page scripting artifact to see the results. It is now possible to get a quick overview in the job summary section of a CICD build, similar to how regular and bcpt test results are displayed.
No new settings are required. Test results will automatically be displayed if tests are enabled via the existing setting pageScriptingTests.
Support for deploying to sandbox environments from a pull request
AL-Go for GitHub now supports deploying from a PR. When using the 'Publish To Environment' workflow, it is now possible to input 'PR_X' as the App version, where 'X' is the PR Id. This will deploy the artifacts from the latest PR build to the chosen environment, if that build is completed and successful.
All apps, which were not built by the PR build will be deployed from the last known good build. You can find a notification on the PR build explaining which build is used as the last known good build.
Note
When deploying a PR build to a sandbox environment, the app will get a special version number, which is: major.minor.maxint.run-number. This means that the sandbox environment likely needs to be deleted after the testing has ended.
v6.4
Deprecations
alwaysBuildAllProjectswill be removed after October 1st 2025. Please set theonPull_Requestproperty of theincrementalBuildssetting to false to force full builds in Pull Requests.<workflow>Schedulewill be removed after October 1st 2025. The old setting, where the setting key was a combination of the workflow name andSchedule(dynamic setting key name) is deprecated. Instead you need to use a setting called workflowSchedule and either use Conditional Settings or place the setting in a workflow specific settings file.Issues
New Workflow specific settings
workflowSchedule- can be structure with a property namedcron, which must be a valid crontab, defining the CRON schedule for when the specified workflow should run. Default is no scheduled runs, only manual triggers. Build your crontab string here: https://crontab.guru. You need to run the Update AL-Go System Files workflow for the schedule to take effect.Note: If you configure a WorkflowSchedule for the CI/CD workflow, AL-Go will stop triggering CICDs on push unless you have also added CICDPushBranches to your settings.
Note also: If you define a schedule for Update AL-Go System Files, it uses direct Commit instead of creating a PR.
workflowConcurrency- is used to control concurrency of workflows. Like with theworkflowSchedulesetting, this setting should be applied in workflow specific settings files or conditional settings. By default, all workflows allows for concurrency, except for the Create Release workflow. If you are using incremental builds in CI/CD it is also recommented to set WorkflowConcurrency to:[ "group: ${{ github.workflow }}-${{ github.ref }}", "cancel-in-progress: true" ]in order to cancel prior incremental builds on the same branch.
Read more about workflow concurrency here.
New Repository Settings
nuGetFeedSelectModedetermines the select mode when finding Business Central app packages from NuGet feeds, based on the dependency version specified in app.json. Options are:Earliestfor earliest version of the package,EarliestMatchingfor earliest version of the package also compatible with the Business Central version used,Exactfor the exact version of the package,Latestfor the latest version of the package,LatestMatchingfor the latest version of the package also compatible with the Business Central version used.deployTo<environment>now has two additional properties:includeTestAppsInSandboxEnvironment, which deploys test apps and their dependencies to the specified sandbox environment if set totrue. Deployment will fail if used on a Prod environment or if the test app has a dependency on Tests-TestLibraries. Default value isfalse.excludeAppIds, which is an array of app ids which will be excluded from deployment. Default value is[]incrementalBuilds- is a structure defining how you want AL-Go to handle incremental builds. When using incremental builds for a build, AL-Go will look for the latest successful build, newer than the definedretentionDaysand only rebuild projects or apps (based onmode) which needs to be rebuilt. Properties in the structure includes:onPush- set this property to true in order to enable incremental builds in CI/CD triggered by a merge/push event. Default is false.onPull_Request- set this property to false in order to disable incremental builds in Pull Request workflows. Default is true.onSchedule- set this property to true in order to enable incremental builds in CI/CD when running on a schedule. Default is false.retentionDays- number of days a successful build is good (and can be used for incremental builds). Default is 30.mode- defines the mode for incremental builds. Currently, two values are supported. Use modifiedProjects when you want to rebuild all apps in modified projects and depending projects or modifiedApps if you only want to rebuild modified apps and depending apps.Note
The projects mentioned here are AL-Go projects in a multi-project repository. A repository can contain multiple projects and a project can contain multiple apps.
Run "Update AL-Go System Files" on multiple branches
Update AL-Go System Files has a new input to specify a list of branches to be updated in a single workflow run.
When running the workflow on a schedule, you can now also specify
includeBranchesinworkflowSchedulesetting, which allows you to update the specified branches. Read more at https://aka.ms/algosettings#workflowSchedule.Note
When running "Update AL-Go System Files" on multiple branches, the template repository URL will be determined based on the branch the workflow runs on and it will be used for all of the specified branches.
Support for incremental builds
AL-Go for GitHub now supports incremental builds, which means that unchanged projects or apps will be reused from the previous good build. Read this to learn more.
Note
When using incremental builds it is recommended to also set
workflowConcurrencyas defined here.Support for GitHub App authentication
AL-Go for GitHub now supports using a GitHub App specification as the GhTokenWorkflow secret for a more secure way of allowing repositories to run Update AL-Go System Files and other workflows which are creating commits and pull requests. See this description to learn how to use GitHub App authentication.
Support for embedded secrets in installApps and installTestApps settings
If your installApps or installTestApps are secure URL, containing a secret token, you can now use a GitHub secret specification as part of or as the full URL of apps to install. An example could be:
"installApps": [ "https://www.dropbox.com/${{SECRETNAME}}&dl=1" ]Which would hide the secret part of your URL instead of exposing it in clear text.
v6.3
Deprecations
cleanModePreprocessorSymbolswill be removed after April 1st 2025. Use Conditional Settings instead, specifying buildModes and thepreprocessorSymbolssetting. Read this for more information.Issues
New Repository Settings
shortLivedArtifactsRetentionDaysdetermines the number of days to keep short lived build artifacts (f.ex build artifacts from pull request builds, next minor or next major builds). 1 is default. 0 means use GitHub default.preProcessorSymbolsis a list of preprocessor symbols to use when building the apps. This setting can be specified in workflow specific settings files or in conditional settings.New Versioning Strategy
Setting versioning strategy to 3 will allow 3 segments of the version number to be defined in app.json and repoVersion. Only the 4th segment (Revision) will be defined by the GitHub run_number for the CI/CD workflow. Increment version number and Create Release now also supports the ability to set a third segment to the RepoVersion and appversion in app.json.
Change in published artifacts
When using
useProjectDependenciesin a multi-project repository, AL-Go for GitHub used to generate short lived build artifacts calledthisBuild-<projectnaame>-<type>-.... This is no longer the case. Instead, normal build artifacts will be published and used by depending projects. The retention period for the short lived artifacts generated are controlled by a settings calledshortLivedArtifactsRetentionDays.Preprocessor symbols
It is now possible to define preprocessor symbols, which will be used when building your apps using the
preProcessorSymbolssetting. This setting can be specified in workflow specific settings file or it can be used in conditional settings.v6.2
Issues
New Repository Settings
useGitSubmodulescan be eithertrueorrecursiveif you want to enable Git Submodules in your repository. If your Git submodules resides in a private repository, you need to create a secret calledgitSubmodulesTokencontaining a PAT with access to the submodule repositories. Like with all other secrets, you can also create a setting calledgitSubmodulesTokenSecretNameand specify the name of another secret, with these permissions (f.ex. ghTokenWorkflow).commitOptions- is a structure defining how you want AL-Go to handle automated commits or pull requests coming from AL-Go (e.g. for Update AL-Go System Files). The structure contains the following propertiesmessageSuffix: A string you want to append to the end of commits/pull requests created by AL-Go. This can be useful if you are using the Azure Boards integration (or similar integration) to link commits to workitems.pullRequestAutoMerge: A boolean defining whether you want AL-Go pull requests to be set to auto-complete. This will auto-complete the pull requests once all checks are green and all required reviewers have approved.pullRequestLabels: A list of labels to add to the pull request. The labels need to be created in the repository before they can be applied.Support for Git submodules
In v6.1 we added experimental support for Git submodules - this did however only work if the submodules was in a public repository. In this version, you can use the
useGitSubmodulessetting to control whether you want to use Git Submodules and thegitSubmodulesTokensecret to allow permission to read these repositories.