You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An organization-wide audit of the PSModule action repositories against the GitHub Actions coding standard found every action repository's CI workflows deviate on two rules, and two repositories additionally deviate on entry-script placement. The workflows are seeded from Template-Action and are defined inline in each repository (no shared reusable workflow), so each repository is corrected individually.
This issue tracks the rollout. Repositories with issues enabled carry their own tracking issue (linked below). The ten repositories that have issues disabled are tracked here, in the framework repository, following the same pattern as other cross-repository rollouts.
Request
Bring every action repository into compliance with two rules of the standard, plus entry-script placement where it applies:
Pin the runner image. Replace ubuntu-latest with a specific image (ubuntu-24.04); pin matrix OS entries to specific versions (e.g. ubuntu-24.04, macos-15, windows-2025) rather than *-latest.
Queue release runs. Set cancel-in-progress: false on the release workflow (Release.yml / Auto-Release.yml) so a publish is never aborted mid-write. Test and lint workflows may keep cancel-in-progress: true.
Entry-script placement. Where the entry script lives at scripts/main.ps1, move it to src/main.ps1 (or main.ps1 at the action root) and update action.yml.
Acceptance criteria
No action repository uses a -latest runner in any workflow.
Every release workflow sets cancel-in-progress: false.
Entry scripts follow the standard's placement (main.ps1 at the action root or under src/).
Template-Action is corrected so regenerated repositories are compliant by default.
Technical decisions
Per-repository fixes. The action repositories do not consume a shared reusable workflow (0 of 19), so each repository's inline workflows are edited directly.
Runner image.ubuntu-latest -> ubuntu-24.04; matrix OS lists pinned to specific images.
Concurrency.cancel-in-progress: false on release/publish workflows only; test and lint keep true (cancelling superseded runs is desirable).
Build-PSModule — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Document-PSModule — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Get-PesterCodeCoverage — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Get-PesterTestResults — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Get-PSModuleSettings — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Initialize-PSModule — pin runners in Action-Test.yml, Linter.yml, Release.yml; (pin matrix OS in Action-Test.yml); set cancel-in-progress: false in Release.yml
Install-PSModuleHelpers — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Publish-PSModule — pin runners in Action-Test.yml, Linter.yml, Release.yml; set cancel-in-progress: false in Release.yml
Resolve-PSModuleVersion — pin runners in Action-Test.yml, Auto-Release.yml, Linter.yml; set cancel-in-progress: false in Auto-Release.yml; move scripts/main.ps1 -> src/main.ps1
Test-PSModule — pin runners in Action-Test-Src-Default.yml, Action-Test-Src-WithManifest.yml, Action-Test-outputs.yml, Linter.yml, Release.yml; (pin matrix OS in Action-Test-Src-Default.yml, Action-Test-Src-WithManifest.yml, Action-Test-outputs.yml); set cancel-in-progress: false in Release.yml
An organization-wide audit of the PSModule action repositories against the GitHub Actions coding standard found every action repository's CI workflows deviate on two rules, and two repositories additionally deviate on entry-script placement. The workflows are seeded from
Template-Actionand are defined inline in each repository (no shared reusable workflow), so each repository is corrected individually.This issue tracks the rollout. Repositories with issues enabled carry their own tracking issue (linked below). The ten repositories that have issues disabled are tracked here, in the framework repository, following the same pattern as other cross-repository rollouts.
Request
Bring every action repository into compliance with two rules of the standard, plus entry-script placement where it applies:
ubuntu-latestwith a specific image (ubuntu-24.04); pin matrix OS entries to specific versions (e.g.ubuntu-24.04,macos-15,windows-2025) rather than*-latest.cancel-in-progress: falseon the release workflow (Release.yml/Auto-Release.yml) so a publish is never aborted mid-write. Test and lint workflows may keepcancel-in-progress: true.scripts/main.ps1, move it tosrc/main.ps1(ormain.ps1at the action root) and updateaction.yml.Acceptance criteria
-latestrunner in any workflow.cancel-in-progress: false.main.ps1at the action root or undersrc/).Template-Actionis corrected so regenerated repositories are compliant by default.Technical decisions
Per-repository fixes. The action repositories do not consume a shared reusable workflow (0 of 19), so each repository's inline workflows are edited directly.
Runner image.
ubuntu-latest->ubuntu-24.04; matrix OS lists pinned to specific images.Concurrency.
cancel-in-progress: falseon release/publish workflows only; test and lint keeptrue(cancelling superseded runs is desirable).Scaffold.
Template-Actionis fixed in its own issue (PSModule/Template-Action#36) so the deviation stops propagating to new repositories.Issue hosting. Ten repositories have issues disabled; their compliance work is tracked in this issue rather than in the repositories themselves.
Out of scope. Dependabot update grouping and semver update labels are intentionally not used (see MSXOrg/docs#19 and #359).
Implementation plan
Repositories tracked in their own issue
Repositories with issues disabled (tracked here)
Action-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; (pin matrix OS inAction-Test.yml); setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Linter.yml,Release.yml; setcancel-in-progress: falseinRelease.ymlAction-Test.yml,Auto-Release.yml,Linter.yml; setcancel-in-progress: falseinAuto-Release.yml; movescripts/main.ps1->src/main.ps1Action-Test-Src-Default.yml,Action-Test-Src-WithManifest.yml,Action-Test-outputs.yml,Linter.yml,Release.yml; (pin matrix OS inAction-Test-Src-Default.yml,Action-Test-Src-WithManifest.yml,Action-Test-outputs.yml); setcancel-in-progress: falseinRelease.ymlScaffold
Template-Action(Bring the action into compliance with the GitHub Actions standard Template-Action#36)