Introduction
AL-Go for GitHub provides automated workflows for publishing Business Central applications to Microsoft AppSource. While the initial app submission must be done manually through Partner Center, AL-Go enables continuous delivery of updates to your AppSource offerings.The initial creation and upload of your app on AppSource cannot be automated in AL-Go for GitHub. You must manually upload marketing materials and the first version of your app through Partner Center. After this initial setup, AL-Go can automate subsequent updates.
What is AppSource Publishing?
Microsoft AppSource is the official marketplace for Business Central extensions. Publishing to AppSource allows you to:- Reach a global audience: Make your apps available to Business Central customers worldwide
- Automate updates: Use AL-Go workflows to continuously deliver app updates
- Maintain quality: Leverage automated validation and testing workflows
- Manage versions: Control preview and production releases through Partner Center integration
Key Concepts
Product ID
Your AppSource Product ID uniquely identifies your offering in Partner Center. This GUID is required for AL-Go configuration and can be found in the browser address bar when viewing your app in Partner Center.
Continuous Delivery
Enable automatic publishing to AppSource after successful builds. When enabled, each successful build is submitted for validation and made available as a preview release.
Main App & Libraries
Your AL-Go project can contain one main AppSource app plus multiple library apps. Library apps can be shared across projects or repositories.
Go Live
After an app passes validation and is available in preview, you can promote it to production either through Partner Center or by running the Publish To AppSource workflow.
Repository Structure
Single Project vs Multi-Project
AL-Go supports both repository structures for AppSource apps: Single Project Repository- One AppSource offering per repository
- Main app + library apps in the same project
- Simpler configuration and dependency management
- Multiple projects, each can contain one AppSource offering
- Shared library apps in separate projects
- Use
UseProjectDependenciesto optimize builds
One AL-Go project can only hold one AppSource offering (one AppSource Product ID) plus a number of library apps. If your library apps are used by multiple AppSource offerings, they should be placed in separate projects or repositories.
Project vs Repository Settings
AL-Go distinguishes between two types of settings files:Repository Settings
File:.github/AL-Go-Settings.json
Contains global settings that apply to all projects:
UseProjectDependencies: Build library apps once and reuse across projects- Organization-wide configuration
- Shared workflow settings
Project Settings
File:.AL-Go/<project>/.AL-Go-Settings.json or <project>/.AL-Go-Settings.json
Contains project-specific configuration:
deliverToAppSource: AppSource-specific settings including Product IDmainAppFolder: Which app folder contains the main appincludeDependencies: Which dependencies to include as library appsgenerateDependencyArtifact: Create artifacts with dependent apps
Prerequisites
Before setting up AL-Go for AppSource publishing, you need:Existing AppSource App
Your app must already be published on AppSource. Complete the initial submission through Partner Center, including:
- Marketing materials and app description
- First version of your app (.app file)
- Technical validation and certification
GitHub Repository
Create a repository based on the AL-Go-AppSource template with your app source code.
AppSource Product ID
Locate your AppSource Product ID in Partner Center. Navigate to your app offering and copy the GUID from the browser address bar.
Partner Center Authentication
Set up authentication to Partner Center using either Service-to-Service (S2S) authentication or User Impersonation. See the Publish Workflow page for details.
Publishing Workflow Overview
The AppSource publishing process in AL-Go follows these stages:Delivery
Based on your configuration, apps are delivered to AppSource either automatically (continuous delivery) or when you manually trigger the workflow.
Validation
Microsoft’s validation service checks your app for technical compliance and best practices.
Authentication Methods
AL-Go supports two authentication methods for Partner Center API access:Service-to-Service (S2S) - Recommended
Best for automated workflows and CI/CD pipelines. Requires creating a Microsoft Entra application with appropriate API permissions. Advantages:- No user interaction required
- Better for automation
- Token doesn’t expire with user password changes
- Recommended for production workflows
- Microsoft Entra application registration
- Client ID and Client Secret
- Appropriate Partner Center API permissions
User Impersonation
Uses device flow authentication with a user account. Suitable for testing or when S2S setup is not feasible. Advantages:- Easier initial setup
- No app registration required
- Good for testing and development
- Requires interactive authentication
- Tokens may expire
- Less suitable for automated workflows
Configuration Overview
Setting up AppSource publishing requires:- AppSourceContext Secret: Contains authentication credentials for Partner Center API
- deliverToAppSource Settings: Project configuration with Product ID and delivery options
- Dependency Configuration: Optional settings for including library apps
Delivery Targets
AL-Go supports multiple delivery targets that can work alongside AppSource publishing:- AppSource: Microsoft’s official marketplace
- Storage: Azure Storage accounts for backup or distribution
- NuGet/GitHub Packages: Package feeds for library apps
- Custom Targets: Define your own delivery scripts
Best Practices
Start with Manual Delivery
Begin with
continuousDelivery: false and manually trigger the workflow until you’re confident in your setup.Use Code Signing
Sign your apps before publishing to AppSource. Learn more about code signing configuration.
Test in Preview
Always validate your apps in preview mode before promoting to production.
Organize Library Apps
Place shared library apps in separate projects or repositories for better reusability.
Enable Dependency Artifacts
Set
generateDependencyArtifact: true when using includeDependencies to properly track and include library apps.Monitor Workflow Logs
Regularly review delivery workflow logs to catch issues early.
Example: BingMaps.AppSource
Microsoft provides a reference implementation at microsoft/bcsamples-bingmaps.appsource demonstrating:- Multi-project repository structure
- Main app with test apps
- Library app separation
- Dependency inclusion configuration
- AppSource delivery workflow
Next Steps
Configure Publishing
Learn how to set up authentication and configure the AppSource publishing workflow
Enable Code Signing
Set up Azure Key Vault and code signing for your AppSource apps