$ show microsoft/AL-Go
AL-Go for GitHub is a comprehensive CI/CD framework and template system for Microsoft Dynamics 365 Business Central AL extension development. It provides a set of reusable GitHub composite actions, PowerShell modules, and starter workflow templates that automate building, testing, signing, deploying, and delivering AL apps to AppSource, NuGet, Azure Storage, GitHub Packages, and Business Central environments. The system supports multi-project repositories, incremental builds, workspace compilation, code analysis with SARIF output, performance testing, Power Platform solution integration, self-updating system files, and extensive telemetry. The architecture is action-centric: each action is a `action.yaml` + PowerShell script, invoked via a consistent wrapper (`Invoke-AlGoAction.ps1`) that handles errors, telemetry, and secret injection. Settings are JSON-driven with a schema, and behavior can be customized via hooks, script overrides, and conditional settings. The repository also includes a full Pester unit test suite, end-to-end test harness, and workshop documentation. While well-crafted with clean separation of concerns, the codebase exhibits some technical drift due to deprecated settings, duplication between Per Tenant Extension and AppSource App templates, hardcoded external URLs, and reliance on external PowerShell modules (BcContainerHelper, Az modules) which may introduce fragility.
The LLM identified 5 files worth highlighting for reuse:
A self-contained PowerShell module providing GitHub API wrappers for authentication (GitHub App, PAT), rate-limit handling with exponential backoff (`Invoke-CommandWithRetry`), artifact upload/download, release management, and semantic version parsing/comparison. It can be extracted and reused for any GitHub automation project independently of AL-Go.
A lightweight logging module that outputs colored, group-aware log messages to stdout and GitHub Actions step summaries. Provides functions like `OutputDebug`, `OutputWarning`, `OutputGroupStart`/`OutputGroupEnd`, and markdown output helpers. It has no internal dependencies and can be reused in any PowerShell-based GitHub Action or CI pipeline.
A utility module for analyzing build warnings from AL compiler logs. It parses warning records, compares new vs. baseline warnings to detect regressions, and outputs structured results. The pattern of capturing a known-good baseline and diffing warnings is generic and applicable to any CI system that produces structured log output.
A reusable code-signing module that abstracts signing operations over Azure Key Vault certificates and Azure Trusted Signing. It handles authentication (including federated credentials), downloads signing certificates, invokes the SignTool, and returns results. The module is decoupled from AL-Go specific logic and can be reused in any PowerShell-based build pipeline that needs code signing.
A custom PowerShell class for reading, manipulating, and writing GitHub Actions YAML workflow files while preserving indentation and comments. It supports finding/replacing lines, extracting custom jobs from user repositories, and merging template updates. This is a non-trivial solution to the problem of updating files that users may have customized, and it can be reused in any context requiring programmatic YAML editing.