Skip to content

Bring the action into compliance with the GitHub Actions standard #36

Description

The workflows in this repository deviate from the organization's GitHub Actions coding standard. CI here is defined by this repository's own inline workflows (it does not consume a shared reusable workflow), so the corrections are applied directly in this repository.

Request

1. Pin the runner image

The standard requires pinning runs-on to a specific image (ubuntu-24.04) rather than ubuntu-latest, so a runner upgrade is a deliberate, reviewable change rather than a silent one.

Workflows currently using a -latest runner:

  • Action-Test.yml (direct)
  • Auto-Release.yml (direct)
  • Linter.yml (direct)

2. Queue release runs instead of cancelling mid-publish

The standard requires cancel-in-progress: false for workflows that publish, deploy, or mutate shared state, so a release run queues rather than aborting mid-write.

  • Auto-Release.yml currently sets cancel-in-progress: true and creates a release, so it must be false.

3. Name and place the entry script per the standard

The standard places a single-file action's entry script at the action root as main.ps1, or under src/ for a multi-file action. This action's entry script lives at scripts/main.ps1.

Acceptance criteria

  • No workflow uses a -latest runner; every runs-on names a specific image (e.g. ubuntu-24.04).
  • The release workflow sets cancel-in-progress: false.
  • Test and lint workflows may keep cancel-in-progress: true (cancelling superseded runs is fine).
  • The entry script is main.ps1 at the action root (or src/main.ps1), and action.yml references the new path.

Technical decisions

Runner image. Replace ubuntu-latest with ubuntu-24.04.

Concurrency. Set cancel-in-progress: false on the release workflow only. Test and lint workflows keep cancel-in-progress: true — cancelling a superseded test run is desirable and is not a publish action.

Entry script. Move scripts/main.ps1 to src/main.ps1 (or to main.ps1 at the action root) and update the run: reference in action.yml accordingly.

Scaffold. This repository is the action scaffold: new action repositories inherit these workflows, so fixing them here stops the deviation from propagating to future repositories.

Out of scope. Dependabot update grouping and semver update labels are intentionally not used and are excluded here (see the standard update in MSXOrg/docs#19 and PSModule/Process-PSModule#359).


Implementation plan

  • Action-Test.yml: replace -latest runner(s) with pinned image
  • Auto-Release.yml: replace -latest runner(s) with pinned image; set cancel-in-progress: false
  • Linter.yml: replace -latest runner(s) with pinned image
  • Move scripts/main.ps1 -> src/main.ps1 and update action.yml
  • Confirm actionlint and zizmor pass via the linter workflow

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions