Before customizing AL-Go, consider creating a feature suggestion to see if your needs can be met through existing mechanisms or if they should become part of the core AL-Go solution.
Customization Options
If AL-Go’s out-of-the-box functionality doesn’t meet your needs, you have three options:- Customize AL-Go for GitHub - Modify your repository following the guidelines below
- Select another managed DevOps solution - Use an alternative platform
- Create your own DevOps solution from scratch - Not recommended due to the significant development and maintenance overhead
Customization Methods
There are three primary ways to customize AL-Go for GitHub:Repository Customization
Add custom scripts, workflows, or jobs to individual repositories
Custom Template Repository
Create a customized template for use across multiple repositories
Fork AL-Go
Fork the AL-Go repository to create your own version (not recommended)
Repository Customization
Hide/Remove Unused Workflows
You can remove unused system files by adding theunusedALGoSystemFiles setting to your .github/AL-Go-Settings.json:
Custom Delivery
Create Context Secret
Add a context secret named
<DeliveryTarget>Context containing your delivery configuration as compressed JSON.Custom Deployment
Setup custom deployment to environment types not supported out-of-the-box:.github/DeployTo<EnvironmentType>.ps1:
Adding Custom Workflows
Custom workflows added to.github/workflows/ are left untouched by AL-Go updates:
Prefix your custom workflows with
my, our, or your organization name to avoid conflicts with future AL-Go workflows.Adding Custom Scripts
Add PowerShell scripts to customize AL-Go behavior:- Repository-scoped scripts:
.github/folder - Project-scoped scripts:
.AL-Go/folder
.AL-Go folder can override standard functionality. See the script overrides documentation for available overrides.
Example override script:
Adding Custom Jobs
Add custom jobs to existing AL-Go workflows by prefixing them withCustomJob:
Custom jobs are moved to the end of the workflow file during updates, but dependencies are maintained.
Custom Template Repositories
For customizations across multiple repositories, create a custom template repository:Create Custom Template
Start with an AL-Go repository (PTE or AppSource template) and apply your customizations.
Private custom templates are supported. AL-Go uses the
GhTokenWorkflow secret to access private template repositories.Custom Template Files
Control which files sync from your template using thecustomALGoFiles setting:
File Configuration Properties
filesToInclude:sourceFolder- Path in template (relative to root)filter- File pattern with wildcards (*.ps1,file.ps1)destinationFolder- Target path in repositoryperProject- Boolean; if true, applies to all AL-Go projects
sourceFolder- Path in templatefilter- File pattern to exclude
File Sync Behavior
| File in Repo | In filesToInclude | In filesToExclude | Result |
|---|---|---|---|
| Yes/No | Yes | No | File is created/updated |
| Yes | Yes | Yes | File is removed |
| Yes | No | Yes | File is not removed |
| No | Yes/No | Yes | File is not created |
Forking AL-Go for GitHub
You can fork either:- Template repositories (AL-Go-PTE or AL-Go-AppSource) - Simpler but limited
- Main AL-Go repository (AL-Go) - Full development capabilities
When forking template repositories, include all branches to access both latest and preview versions of AL-Go.
Fork Maintenance
If you fork AL-Go:- Keep changes minimal
- Stay up-to-date with upstream changes
- Regularly merge Microsoft’s updates
- Consider contributing your changes back to AL-Go
Microsoft continuously develops and maintains AL-Go, ensuring the latest GitHub action versions and avoiding third-party dependencies. Staying on the mainstream version helps you benefit from these updates.
Update Management
AL-Go repositories can be updated manually or on a schedule:- You’ll be notified when updates are available
- Keep repositories up-to-date at all times
- Manual modifications to AL-Go System Files (except as documented) will be removed during updates
If an AL-Go update causes issues, file an issue on GitHub with detailed logs, then revert to the previous version until resolved.