Overview
App dependencies in AL-Go are configured using theappDependencyProbingPaths setting, which tells the build system where to find external apps. During CI/CD workflows, AL-Go downloads the specified apps and installs them before building your project.
Two-Step Process: You must add dependencies to both:
- The
appDependencyProbingPathssetting in AL-Go settings - The
dependenciesarray in yourapp.jsonfile
Dependency Configuration Structure
TheappDependencyProbingPaths setting expects a JSON array with dependency specifications:
Configuration Parameters
repo
The full GitHub URL of the repository containing the dependency app.Example:
https://github.com/myorg/base-appversion
The version of the dependency to download. Can be:
latest- Always use the most recent version- Specific version like
1.0.0,2.3.1
release_status
The type of release to download from:
release- Official releases (default)prerelease- Pre-release versionsdraft- Draft releases
authTokenSecret
Name of the secret containing the GitHub access token (required for private repositories).
projects
Which projects to include from the repository:
*- All projects (default)- Specific project name for multi-project repos
branch
The branch to use (default:
main).Use specific branches for development dependencies.Basic Example: Public Repository
To depend on apps from a public GitHub repository:Update AL-Go settings
Add the dependency to your
.AL-Go/settings.json or project-level settings.json:Private Repository Dependencies
When depending on apps in private repositories, you need to provide authentication.Create a GitHub Personal Access Token
Generate a Personal Access Token (PAT) with appropriate permissions:
- Go to GitHub Settings → Developer settings → Personal access tokens
- Click Generate new token (classic)
- Select scopes:
repo- Full control of private repositories
- Generate and copy the token
Add the token as a secret
Add the PAT to your repository or Azure Key Vault:GitHub Secrets:
- Navigate to repository Settings → Secrets and variables → Actions
- Click New repository secret
- Name:
DEPENDENCY_ACCESS_TOKEN - Value: Your PAT
- Click Add secret
Advanced Scenarios
Multiple Dependencies
Depend on multiple repositories:Specific Project in Multi-Project Repository
If the dependency repository contains multiple AL-Go projects, specify which one:Development Branch Dependencies
Version Management
Latest vs. Specific Versions
latest
Pros: Always get bug fixes and improvements automaticallyCons: Breaking changes might cause build failuresBest for: Internal dependencies you control
Specific Version
Pros: Stable, predictable buildsCons: Must manually update to get fixesBest for: External dependencies, production apps
Update Strategy
Test updates in a branch
When a new version is available:
- Create a feature branch
- Update to the new version
- Run full CI/CD to verify compatibility
- Merge if successful
Dependency Resolution
AL-Go downloads and installs dependencies in this order:installOnlyReferencedApps: By default (when
installOnlyReferencedApps is true), AL-Go only installs apps that are in your dependency chain. Set to false to install all apps found in the probing paths.Best Practices
Dependency Hygiene
- Keep dependencies minimal: Only depend on what you actually use
- Document dependencies: Comment why each dependency is needed
- Review regularly: Remove unused dependencies
- Version appropriately: Use specific versions for stability
Security
- Use read-only tokens when possible
- Create separate tokens for different dependency sources
- Rotate tokens periodically
- Audit token usage
Build Performance
- Use
installOnlyReferencedApps: trueto avoid unnecessary installations - Specify exact projects instead of
*when possible - Pin to specific versions to enable caching
- Consider creating focused dependency repositories
Testing
Test dependency updates in isolation
Create a branch specifically for testing new dependency versions.
Troubleshooting
Dependency Not Found
Symptom: Build fails with “app not found” or “dependency not resolved” Solutions:- Verify the repository URL is correct
- Check that a release exists with the specified version
- Ensure the release contains app artifacts
- Verify the release status matches your configuration
- Check authentication if it’s a private repository
Authentication Failures
Symptom: “Failed to download” or “403 Forbidden” errors Solutions:- Verify the secret name matches
authTokenSecret - Check the PAT has
reposcope - Ensure the PAT hasn’t expired
- Verify the PAT user has access to the repository
Version Conflicts
Symptom: Build fails with version mismatch errors Solutions:- Check all dependencies use compatible versions
- Review transitive dependencies (dependencies of dependencies)
- Update
app.jsonversion requirements to match available versions - Consider using
updateDependenciessetting (with caution)
Next Steps
Versioning Strategy
Learn about version numbering and release management in AL-Go
Development Environments
Set up online development environments for testing dependencies