Overview
This workflow creates a GitHub release from a successful build, allowing you to:- Tag specific versions of your applications
- Generate release notes automatically from commits
- Publish artifacts to the release
- Create release branches for hotfix support
- Update version numbers in the main branch
- Deliver to external targets (NuGet, Storage)
Triggering the Workflow
The Create Release workflow must be triggered manually.Workflow Parameters
Required Parameters
Name of this releaseThe display name for the release (e.g., “Version 1.0”, “Spring 2024 Release”).Example:
v1.0Tag of this releaseMust be a semantic version string following semver.org (e.g.,
1.0.0, 2.1.3-beta).Example: 1.0.0Optional Parameters
Build version to promoteWhich build to promote to a release:
latest: Most recent successful build1234: Specific workflow run ID- Version number from a previous release
latestRelease typeOptions:
- Release: Public, production-ready release
- Prerelease: Beta or preview release
- Draft: Unpublished draft for review
ReleaseCreate Release Branch?Creates a branch from the release commit to enable hotfixes.Example:
trueRelease branch prefixPrefix for the release branch name (e.g.,
release/ creates release/1.0.0).Example: release/New Version Number in main branchHow to update the version after release:
- Absolute:
2.0(sets to version 2.0) - Incremental:
+0.1(adds 0.1 to current version) - Incremental:
+1(increments major version)
+0.1Skip updating dependency version numbersWhen true, only updates the version in the main app, not in dependent apps.Example:
falseDirect Commit?When true, commits version updates directly to main. When false, creates a pull request.Example:
falseUse GhTokenWorkflow for PR/Commit?Use the
ghTokenWorkflow secret instead of the default token. Required for triggering subsequent workflows.Example: falseWorkflow Jobs
Create Release
The main job that creates the GitHub release.Actions Performed:
- Validates workflow inputs (tag format, version numbers)
- Checks for AL-Go system file updates
- Determines which artifacts to include
- Generates release notes from commit history
- Creates the GitHub release
- Tags the commit with the release version
- Includes all commits since the last release
- Lists new contributors
- Adds link to full changelog
- Formatted in Markdown
The release is created at the commit specified by the build version, ensuring reproducibility.
Upload Artifacts
Downloads and uploads artifacts to the release.Artifact Types:
- Apps: Compiled
.appfiles - Test Apps: Test application packages
- Dependencies: Dependency app files
- PowerPlatform: PowerPlatform solution files (if applicable)
- Downloaded from the build workflow run
- Zipped with a descriptive name
- Uploaded to the GitHub release
- NuGet: As NuGet packages
- Storage: Azure Blob Storage or similar
Create Release Branch
Optionally creates a release branch for hotfix support.Branch Creation:
- Branch name:
{releaseBranchPrefix}{releaseVersion} - Example:
release/1.0.0 - Created from the release commit
- Allows hotfix development without affecting main
Release branches are useful for maintaining multiple versions simultaneously.
Update Version Number
Optionally updates version numbers in the main branch.Version Update Process:
- Increments version in
app.jsonfiles - Updates dependencies between apps (unless skipped)
- Either commits directly or creates a pull request
- Uses
IncrementVersionNumberAL-Go action
Example: Creating Your First Release
Prerequisites
Ensure you have:
- At least one successful CI/CD build
- Proper permissions to create releases
ghTokenWorkflowsecret (if using pull requests for version updates)
Run the Workflow
Navigate to Actions → Create release → Run workflowFill in the parameters:
- name:
v1.0 - tag:
1.0.0 - buildVersion:
latest - releaseType:
Release - updateVersionNumber:
+0.1
Wait for Completion
The workflow will:
- Create the release
- Upload artifacts
- Create a version update PR
After merging the version update PR, the CI/CD workflow will automatically run and may deploy to environments.
Release Notes
Release notes are automatically generated and include:- Summary: Description of changes since last release
- What’s Changed: List of commits with links
- New Contributors: First-time contributors
- Full Changelog: Link to compare view
Customizing Release Notes
After the release is created, you can edit it:- Go to the Releases page
- Click Edit on your release
- Modify the description
- Save changes
Consider adding upgrade notes, breaking changes, and migration guides to release notes.
Release Artifacts
Each release includes downloadable artifacts:Application Files
-Apps-.zipContains all
.app files for the release.Test Applications
-TestApps-.zipTest apps for validation and testing.
Dependencies
-Dependencies-.zipAll dependency apps required for installation.
Source Code
Source code (zip/tar.gz)Automatically generated by GitHub.
Version Number Updates
Understanding Version Increments
AL-Go supports flexible version number updates:| Input | Current Version | New Version | Description |
|---|---|---|---|
+1 | 1.0.0.0 | 2.0.0.0 | Increment major |
+0.1 | 1.0.0.0 | 1.1.0.0 | Increment minor |
2.0 | 1.0.0.0 | 2.0.0.0 | Set absolute version |
3.5 | 1.2.0.0 | 3.5.0.0 | Set absolute version |
Version Strategy
Configure versioning strategy in.github/AL-Go-Settings.json:
0: Major.Minor (e.g., 1.0)1: Major.Minor.Build (e.g., 1.0.0)2: Major.Minor.Build.Revision (e.g., 1.0.0.0)3: Use all four version fields independently
Delivery Targets
NuGet Delivery
To deliver releases to NuGet:-
Configure NuGet Context Secret:
Secret name:
nuGetContextSecret value: - Artifacts are automatically packaged as NuGet packages and pushed
Storage Delivery
To deliver releases to Azure Storage:-
Configure Storage Context Secret:
Secret name:
storageContextSecret value: - Artifacts are uploaded to the specified container
Release Branches and Hotfixes
Release branches enable hotfix workflows:Create Hotfix Release
Run Create Release again:
- buildVersion: Use the hotfix build
- tag:
1.0.1 - name:
v1.0.1 Hotfix
Required Secrets
TokenForPush
Purpose: Create releases and push tagsType: Personal Access Token with
repo scopeUsed for creating GitHub releases.ghTokenWorkflow
Purpose: Trigger subsequent workflowsType: Personal Access Token with
workflow scopeRequired when useGhTokenWorkflow is true.nuGetContext
Purpose: Deliver to NuGetType: JSON with NuGet server URL and API keyOptional, for NuGet delivery.
storageContext
Purpose: Deliver to StorageType: JSON with storage account detailsOptional, for Storage delivery.
Troubleshooting
Tag Already Exists
Choose a different tag name. Git tags must be unique. Delete the old tag if necessary.
No Artifacts Found
Ensure the build version exists and completed successfully. Check the workflow runs.
Version Update Fails
Verify the version number format. Use
+0.1 for incremental or 2.0 for absolute versions.PR Not Created
Ensure
ghTokenWorkflow secret is configured. The default token cannot trigger workflows.Best Practices
Use Semantic Versioning
Follow semver.org for version tags:
MAJOR.MINOR.PATCHCreate Release Branches for Production
Enable hotfix support by creating release branches for production releases.