Merged
Conversation
- Rename release workflows: phase-1 → initiate, phase-2 → publish. - Move all PowerShell scripts to .github/workflow-scripts/. - Add conditional license generation with forceLicenseGeneration parameter. - Use hyphens-row detection for license truncation boundary. - Create signed commits via GraphQL API. - Add PR comments for license generation errors and warnings. - Support manual pipeline runs with PR lookup fallback. - Strip trailing whitespace from LICENSE.txt during generation. - Add license generation error and warning comment templates.
Contributor
PR Metrics✔ Thanks for keeping your pull request small.
Metrics computed by PR Metrics. Add it to your Azure DevOps and GitHub PRs! |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR accelerates the release process by consolidating the 3-phase release workflow into a streamlined 2-phase model. The changes refactor release automation by moving license generation from a separate GitHub Actions workflow (release-phase-2) into the Azure DevOps PR pipeline, and by extracting workflow logic into reusable PowerShell scripts.
Changes:
- Consolidated 3-phase release workflow into 2-phase:
release-initiate.yml(formerly phase-1) creates PR with version/license/dependency updates, andrelease-publish.yml(formerly phase-3) builds/signs/publishes when trigger file changes - Added PowerShell scripts in
.github/workflow-scripts/for version updates, license management, change detection, and signed commits - Integrated automated license generation into Azure DevOps PR pipeline with Component Governance notice@0 task and GitHub API comment notifications
Reviewed changes
Copilot reviewed 20 out of 21 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/release-initiate.yml |
New 2-phase release workflow that replaces phase-1, creates PR with version bumps and license truncation |
.github/workflows/release-publish.yml |
Renamed from phase-3, builds/signs/publishes releases when trigger file changes |
.github/workflows/release-phase-1.yml |
Deleted - replaced by release-initiate.yml |
.github/workflows/release-phase-2.yml |
Deleted - license generation moved to Azure DevOps pipeline |
.github/workflow-scripts/Update-Version.ps1 |
New script to update version numbers across all project files |
.github/workflow-scripts/Update-Licenses.ps1 |
New script to truncate/check license file state (has critical bug) |
.github/workflow-scripts/Test-LicensesResult.ps1 |
New script to validate license generation and post PR comments |
.github/workflow-scripts/Test-Changes.ps1 |
New script to detect git changes for conditional workflow steps |
.github/workflow-scripts/Push-SignedCommit.ps1 |
New script to commit license updates via GitHub GraphQL API with signing |
.github/azure-devops/template.yml |
Added license generation steps with Component Governance integration |
.github/azure-devops/pr.yml |
Added forceLicenseGeneration parameter |
.github/workflows/support/release-publish-trigger.txt |
New trigger file replacing phase-3-trigger.txt (has wrong version) |
.github/workflows/support/release-phase-3-trigger.txt |
Deleted - replaced by release-publish-trigger.txt |
.github/workflows/support/release-phase-2-comment.md |
Deleted - replaced by new license generation templates |
.github/workflows/support/license-generation-warning.md |
New template for license generation warnings |
.github/workflows/support/license-generation-error.md |
New template for license generation errors |
.github/workflows/build.yml |
Standardized on PowerShell shell, consolidated change detection logic, added CodeQL query suites |
.github/actions/release-phase-1-internal/action.yml |
Deleted - logic moved to release-initiate.yml workflow |
.github/actions/git-setup-and-push/action.yml |
Deleted - logic moved to release-initiate.yml workflow |
docs/verification.md |
Updated workflow references from release-phase-3 to release-publish |
.editorconfig |
Updated trigger file pattern to match new naming |
- Eliminated the cron schedule for quarterly runs. - Retained manual trigger option for flexibility.
- Deleted linkspector validation steps from build workflow. - Simplified the workflow by removing redundant link checks.
neilr81
approved these changes
Feb 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reduces the release process from 3 phases to 2 and PR signoffs from 2 to 1 by automating licence notice generation within the existing PR validation pipeline, eliminating a dedicated manual phase.
What Changed
forceLicenseGenerationparameter supports manual reruns.release-phase-1→release-initiate,release-phase-3→release-publish,release-phase-2removed..github/workflow-scripts/. Deleted thegit-setup-and-pushandrelease-phase-1-internalcomposite actions.Testing
Test Types
Other Test Details
Significant manual testing of the different combinations of builds and license states.