What's New in AL: Go for GitHub (2024 release wave 2)
AL Go for GitHub changes in the 2024 release wave 2: commit SHA references for non-AL Go actions, federated credentials and managed identities, NuGet symbols for AppSource apps with trusted feeds, performance tests, and the planned move away from BC Container Helper over 2 to 3 years.
- Introduction and Overview
- Security Enhancements Part 1: Actions and Pre-commit
- Federated Credentials and Managed Identities
- Federated Credentials Technical Deep Dive
- Federated Credentials Demo
- NuGet support and symbols for AppSource apps, Future NuGet investments and first-party apps
- AppSource symbols NuGet feed demonstration
- Dependency resolution with traditional install apps
- Trusted NuGet feeds configuration and authentication
- GitHub packages and NuGet package naming changes
- Performance test capabilities, configuration and results analysis
- BC samples GitHub tag and repository discovery
- Container Helper deprecation, DevOps strategy and Managed DevOps solutions
- Page scripting tests, Template customization, Runtime packages and future investments
Overview
The session covers what is new in AL Go for GitHub in release wave 2 of 2024. It starts with security: non-AL Go actions are referenced by commit SHA, pre-commit was added for file consistency, and federated credentials and managed identities remove most secrets. The tenant ID and client ID are still kept in the secrets template.
It then covers NuGet support. Symbols for AppSource apps are on a public NuGet feed, trusted feeds are configured in settings, and Deliver to NuGet now uses the same one-package-per-app mechanism as GitHub packages. Other topics are performance tests with baseline comparison and thresholds, the BC samples tag, the BC Container Helper deprecation plan, managed DevOps recommendations, and future items (runtime packages on NuGet, first-party apps in NuGet, page scripting tests in CI/CD, template customization). The speaker gives no timeline or promise for the future items.
Key points
- Non-AL Go GitHub actions are now referenced by commit SHA; AL Go actions keep version numbers such as 5.3 so hotfixes can be delivered.
- Federated credentials and managed identities remove most secrets. Tenant ID and client ID stay in the secrets template, and an exposed access token is valid for typically one hour.
- Symbols for all AppSource apps are on a public NuGet feed. Microsoft feeds are trusted by default; do not trust nuget.org unless prefixes or fingerprints are registered. Federated credentials are not yet supported for feed authentication.
- Deliver to NuGet now uses one package per app, matching the GitHub packages mechanism. GitHub package names change to app name plus app ID, while resolution still uses app ID.
- Performance tests run in CI/CD or scheduled runs, compare against a baseline, and have separate warning and failure thresholds for duration and SQL statement counts. A baseline must be set up manually or copied from earlier runs.
- AL Go will stop using BC Container Helper gradually over 2 to 3 years. Self-made DevOps solutions will need to migrate, and the new PowerShell module commands will not be compatible with BC Container Helper.
- BC sample repositories can be found through the BC samples tag at aka.ms/bcsamples and forked to get a full AL Go and Power Platform setup.
Features
| Feature | Status | At | Evidence |
|---|---|---|---|
| GitHub actions referenced by commit SHA | status not stated, demoed | 1:24 | |
| Pre-commit for file consistency | status not stated | 3:34 | |
| Federated credentials and managed identities | status not stated, demoed | 3:47 | |
| NuGet support for AppSource apps | status not stated, demoed | 13:04 | |
| Deliver to NuGet implementation changes | status not stated, demoed | 13:59 | |
| First-party apps in NuGet packages | announced | 14:43 | “we’re also working on having all first-party apps, meaning all Microsoft apps, available in NuGet packages as well as the app source symbols.” (14:56) |
| Trusted NuGet feeds in AL Go for GitHub | status not stated, demoed | 18:12 | |
| NuGet feed fingerprint and prefix registration | status not stated, demoed | 19:39 | |
| GitHub packages naming changes | status not stated, demoed | 20:49 | |
| Performance test in AL Go for GitHub | status not stated, demoed | 22:06 | |
| Performance test threshold configuration | status not stated, demoed | 23:39 | |
| BC samples GitHub tag | status not stated, demoed | 25:47 | |
| BC samples repository forking and setup | status not stated, demoed | 27:21 | |
| BC Container Helper deprecation in AL Go | status not stated | 28:29 | |
| Managed DevOps solutions strategy | status not stated | 31:30 | |
| Page scripting tests in AL Go CI/CD | status not stated | 32:30 | |
| Indirect template customization capabilities | announced | 33:13 | “We’re working on indirect tape templates and customization capabilities, and we’re not really sure where to land this one.” (33:13) |
| Runtime package generation and NuGet publishing | announced | 34:16 | “We also will add mechanisms to generate and publish runtime packages to NuGet. We’ve talked about this for quite some time. Now we have” (34:16) |
| Enhanced documentation and roadmap for AL Go | announced | 35:17 | “We’ll add some more documentation, more how-to videos, and an updated roadmap so that this will make life easier for partners and customers using” (35:17) |
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- other “CICD YAML file” at 1:54
- other “checkout action” at 2:07
- other “GitHub workflow for CICD” at 3:01
- other “Microsoft AL Go action” at 3:01
- other “BC samples Bing Maps dot app source” at 11:33
- other “Abakion Legal” at 15:39
Quotes
- 0:33 “Security is important. Uh if not the most important thing, then it’s up there.”
- 1:24 “always reference GitHub actions using a commit uh sha really, right? Um and this this is for all non-AL Go actions.”
- 3:47 “federated credentials and managed identities. Um No more secrets. We basically have removed the the the most of the reasons for having secrets in”
- 10:18 “if the access token is exposed, then you will have access to the resource it for the validity of the access token, which typically”
- 13:04 “Now, NuGet support is something that we’ve been working on for a long time. Um and in this release, we have symbols for all”
- 13:16 “symbols for all app source apps available on a public NuGet feed. Uh AL Go for GitHub supports trusting NuGet feeds”
- 14:13 “Uh the the agreed upon NuGet format for for Business Central apps does not include multiple apps in one package.”
- 14:43 “Now, as future investments, we will also be able to publish runtime packages to NuGet, either private or public”
- 18:33 “We will by default trust all Microsoft trusted NuGet feeds, this one and the feeds that uh that will have our first-party apps, the”
- 20:00 “Uh this piece does not yet uh support federated credentials.”
- 22:28 “The latest version of Algo for GitHub, you will now have the ability to run performance test either in CI/CD or in scheduled test”
- 25:18 “The reason why we really count the SQL statements is that uh very frequently that is the primary reason for things to to regress”
- 26:17 “And it will show me all repositories on GitHub that has the tag BC samples.”
- 29:28 “We will, however, take all DevOps relevant features and implement that in either other PowerShell module and in GitHub Actions. And then will AL”
- 30:14 “It’s not going to happen day one when we go away from using BC Container Helper in AL Go for GitHub. But eventually, like,”
- 30:51 “If you’re running like projects that needs to go on AppSource or PTEs that needs to be installed in online environments, I urge you”
- 32:30 “The BC replay and NPM package was actually released to the public. And that means that we can in AL Go for GitHub start”
- 32:46 “We are not ready with that today, so I actually think AL Ops beat us to it.”
- 34:29 “With the small addition to the to the AL compiler. They might the team might not think it’s small, but let’s see.”
- 35:29 “We’ll make AL Go for GitHub independent of BC Container Helper over the next 2 to 3 years.”
Disclaimers in the video
- 0:45 preview: Performance tests has been in preview for some time.
- 13:45 subject-to-change: Deliver to GitHub packages has been as a proof of concept prototype in AL Go for quite some time uh and and that still works as earlier.
- 14:43 coming-later: As future investments, we will also be able to publish runtime packages to NuGet
- 14:56 coming-later: we’re also working on having all first-party apps, meaning all Microsoft apps, available in NuGet packages as well as the app source symbols.
- 20:00 subject-to-change: This piece does not yet uh support federated credentials.
- 32:19 coming-later: What I say now, there’s no timeline, there’s no promises. It might I actually some of them I’m pretty sure they’ll be there, but I’m no timeline.
- 35:29 coming-later: We’ll make AL Go for GitHub independent of BC Container Helper over the next 2 to 3 years.
Presenters (as heard): Freddy Christiansen, Kamil.
