Secret Locations
Secrets can be defined at three levels in GitHub:Organizational secrets
Defined at the GitHub organization level and shared with repositories.
For the free GitHub plan, organizational secrets can only be shared with public repositories.
Repository secrets
Defined on individual repositories. Repository secrets override organizational secrets with the same name.
Azure Key Vault
You can also store secrets in Azure Key Vault. To enable this, create anAZURE_CREDENTIALS secret in GitHub. See Azure_Credentials for details.
Important Warnings
Core Secrets
Azure_Credentials
Connect AL-Go to Azure services for Key Vault access and app signing.For app signing, the Key Vault must use Premium SKU. Upgrade with:
Required Permissions
| Security Model | Read Secrets | Sign Apps |
|---|---|---|
| Role Based Access Control (recommended) | Key Vault Secrets User | Key Vault Crypto User + Key Vault Certificate User |
| Vault Access Policy | Secret permissions: Get, List | Cryptographic Operations: Sign + Certificate permissions: Get |
Authentication Methods
- For Managed Identity: Go to Settings → Federated Credentials
- For App Registration: Go to Certificates & Secrets → Federated Credentials
- Register your GitHub repository (organization, repository, branch/environment)
- AL-Go will request an ID_TOKEN from GitHub as proof of authenticity
Federated credentials are more secure than client secrets - only workflows in the specified branch/environment can authenticate.
AuthContext
Deploy apps to Business Central environments.For multiple environments, create environment-specific secrets:
<EnvironmentName>_AUTHCONTEXT (e.g., QA_AUTHCONTEXT, PROD_AUTHCONTEXT).Refresh Token (Impersonation)
Allows AL-Go to impersonate a user for 90 days.App Registration (Service to Service)
Requires the app to be registered in Business Central with permissions:- D365 AUTOMATION
- EXTEN. MGT. - ADMIN
AppSourceContext
Deliver apps to AppSource for validation and publication.The app registration must be registered in Partner Center with appropriate permissions.
StorageContext
Deliver build artifacts to Azure Storage.Placeholder Variables
Use these placeholders incontainerName and blobName:
{project}- Project or repository name{version}- Version number (with-previewfor continuous delivery){branch}- Branch name{type}- Artifact type:apps,testapps, ordependencies
Container names must:
- Start and end with lowercase letter or number
- Contain only lowercase letters, numbers, or dashes
- Have no consecutive dashes
- Be 3-63 characters long
Authentication Methods
GitHubPackagesContext
Deliver apps to GitHub Packages and enable automatic dependency resolution.GitHub App authentication doesn’t support packages. Use a Personal Access Token (Classic or Fine-Grained).
AL-Go automatically uses this feed for dependency resolution across all repositories sharing this secret.
NuGetContext
Deliver apps to custom NuGet feeds (e.g., Azure Artifacts).GhTokenWorkflow
Personal Access Token for updating AL-Go system files. Required Permissions:- Modify workflows
See the Update AL-Go System Files documentation for detailed setup.
GitSubmodulesToken
Access private Git submodules during build. Required Permissions:- Read access to submodule repositories
Alternatively, use the
gitSubmodulesTokenSecretName setting to reference a different secret (e.g., GhTokenWorkflow).Code Signing Secrets
Certificate URL Method (Legacy)
Azure Key Vault Certificate
Store certificate in Azure Key Vault (requires Premium SKU):Settings in .AL-Go/settings.json
Azure Trusted Signing
Configure in settings (no separate secret needed if usingAzure_Credentials):
Settings in .AL-Go/settings.json
See the Code Signing documentation for detailed setup instructions.
Additional Secrets
LicenseFileUrl
URL to a Business Central license file for builds.Business Central 22+: The CRONUS demo license is sufficient for most scenarios.Prior to BC 22: Required for AppSource apps or apps with custom object ranges.
Admin Center API Credentials
Create online development environments using the Admin Center API.See Create Online Development Environment for setup details.
Application Insights Connection String
Embed Application Insights connection string in apps.AppSource-Specific Secrets
For AppSource apps with Key Vault integration:See Enable KeyVault for AppSource App for detailed setup.
Secret Management Best Practices
Use Federated Credentials
Prefer federated credentials over client secrets for better security
Rotate Secrets Regularly
Set expiration dates and rotate secrets before they expire
Limit Secret Scope
Only grant repository access to necessary secrets
Use Azure Key Vault
Centralize secret management with Azure Key Vault
Troubleshooting
Secrets Not Available in Workflows
Check secret scope
Verify the secret is accessible to the repository (organizational secrets need explicit access).
JSON Format Errors
Refresh Token Expired
Refresh tokens typically expire after 90 days:- Generate a new refresh token
- Update the
AuthContextsecret - Re-run the deployment workflow
Next Steps
Settings Reference
Configure AL-Go settings and behaviors
Workflows
Learn about available workflows
Azure Key Vault Setup
Set up Azure Key Vault integration
Environments
Configure deployment environments