🩹 [Patch]: Workflow artifacts stay isolated - #541
Draft
Marius Storhaug (MariusStorhaug) wants to merge 6 commits into
Draft
🩹 [Patch]: Workflow artifacts stay isolated#541Marius Storhaug (MariusStorhaug) wants to merge 6 commits into
Marius Storhaug (MariusStorhaug) wants to merge 6 commits into
Conversation
Marius Storhaug (MariusStorhaug)
added a commit
to PSModule/Invoke-ScriptAnalyzer
that referenced
this pull request
Sep 10, 2026
Configured `TestResult_OutputPath` and `CodeCoverage_OutputPath` values now reach `Invoke-Pester` unchanged, so enabled reports are written to the locations selected by the caller. Callers that leave either input empty retain the existing `Invoke-Pester` fallback path relative to `WorkingDirectory`. ## Fixed: Configured report paths The action now uses `Invoke-Pester` v5.1.1, which honors configured report output paths and keeps its action-private temporary state outside the caller worktree. Set either input independently when that report needs a custom destination; the other report continues to use its configured or default behavior. ```yaml with: TestResult_OutputPath: artifacts/TestResult/results.xml CodeCoverage_OutputPath: artifacts/CodeCoverage/coverage.xml ``` ## Adopting this release 1. Select the release containing this fix in the `PSModule/Invoke-ScriptAnalyzer` workflow reference. 2. Existing callers that leave both output-path inputs empty need no configuration, code, or invocation changes; reports continue to use the established `Invoke-Pester` defaults below `WorkingDirectory`. 3. Existing callers that already set `TestResult_OutputPath` or `CodeCoverage_OutputPath` need no configuration change; the configured location is now honored. Set either input when a report should use a new custom destination. ## Release impact | Field | Value | | --- | --- | | Effective decision | `release:patch`, selected for a backward-compatible report-path correction. | | Semantic effect | Patch, stable; configured output paths now work as documented and omitted inputs retain their prior behavior. | | Release/base coordinates | Final coordinates are resolved by the release process at publication. The published record supplies the target version, tag, immutable source, version-computation base, and release/source baseline. | --- <details> <summary>Technical details</summary> ### Consumer change record | Identifier / surface | Before | After | Applicability / prerequisites | Consumer action | Verification | | --- | --- | --- | --- | --- | --- | | REPORT-PATH-OVERRIDE / `TestResult_OutputPath`, `CodeCoverage_OutputPath` | `Invoke-Pester` v5.1.0 overwrote values forwarded by this action, so configured destinations were not used. | `Invoke-Pester` v5.1.1 retains each configured path. Empty inputs retain `TestResult/PSScriptAnalyzer-TestResult-Report.xml` and `CodeCoverage/PSScriptAnalyzer-CodeCoverage-Report.xml` below `WorkingDirectory`. | Callers that enable test-result or code-coverage reports. | Select this release. No change is needed for existing configured paths or omitted inputs; optionally set either input to choose a destination. | The action-test suite verifies explicit generic `artifacts/...` paths, XML and JSON report creation, absence of legacy root report and `.temp` directories for the explicit case, and preserved fallback paths when inputs are omitted. | ### Template baseline Not applicable. This composite action does not consume an integration template. Downstream framework adoption is tracked separately in PSModule/Process-PSModule#541. ### Maintainer evidence - `action.yml` pins the published `Invoke-Pester` v5.1.1 fix to immutable commit `c5494aba3c07d7bfd81bdbbc9f301e8fa4a729fb`. - The focused action-test jobs cover both explicit overrides and omitted-input fallback behavior; `tests/Assert-ReportPaths.ps1` verifies generated XML and JSON reports and expected directory isolation. - `README.md` documents the preserved fallback behavior and generic explicit override example. - Implementation plan progress: complete. The report-path regression was made red against v5.1.0 before the dependency was updated, then passed with v5.1.1. - Standards and framework alignment: reviewed GitHub Actions dependency pinning, action input contracts, PowerShell test conventions, and Markdown documentation; aligned. - Issue convergence sweep: the completed diff addresses the configured report-path regression only; no additional issues were identified as fully satisfied. | Changed surface | Standards checked | Framework docs checked | Result | | --- | --- | --- | --- | | `action.yml` | Dependencies, GitHub Actions | Composite action input contract; Invoke-Pester v5.1.1 release notes | Aligned | | `.github/workflows/Action-Test.yml`, `tests/Assert-ReportPaths.ps1` | Testing, GitHub Actions, PowerShell | Invoke-Pester report-path and temporary-state contract | Aligned | | `README.md` | Documentation, Markdown | GitHub Action input documentation | Aligned | </details> <details> <summary>Relevant issues (or links)</summary> ### Related work - Depends on PSModule/Invoke-Pester#78 - Followed by PSModule/Process-PSModule#541 - Followed by PSModule/Invoke-Pester#85 </details>
Super-linter summary
All files and directories linted successfully For more information, see the GitHub Actions workflow run Powered by Super-linter |
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.
Generated analyzer reports now stay in each consumer worktree’s
.PSModule/TestResultdirectory, and documentation builds no longer bypass consumer ignore rules or stage generated artifacts.Fixed: Generated workflow artifacts
Source and module analyzer jobs use the released PSModule/Invoke-ScriptAnalyzer v5.0.1 SHA and write deterministic per-suite, per-OS reports under
.PSModule/TestResult/, relative to their configured consumer working directory. Documentation generation continues to pass.PSModule/docsto site publication as an artifact without committing generated files to the consumer repository.Changed: Artifact-root reference
The pipeline-stage reference documents
.PSModuleas the consumer artifact root for module, documentation, site, test-result, and code-coverage output. It also distinguishes runner-only aggregation and lint output from consumer repository artifacts.Adopting this release
No configuration, code, or invocation changes are required beyond selecting this release.
Release impact
release:patch.Technical details
Consumer change record
PSModule/Invoke-ScriptAnalyzer@9acddbd55ff4634b738be3a219c76e3676aaf1cd # v5.0.1and pass.PSModule/TestResult/<suite>-<os>-TestResult-Report.xml, resolved relative to the configured working directory.TestResult,CodeCoverage, and.tempdirectories..gitignoreand broadly staged the consumer worktree..PSModule/docsworkflow artifact consumed by Build-Site; no generated files are staged..gitignorerenames, broad staging, and legacy root artifact paths.Pipeline stageslists the.PSModuleartifact directories and runner-only exceptions.Template baseline
No template baseline applies to this framework workflow change.
Maintainer evidence
Test-first assertions were run red before the Analyzer v5.0.1 pin and report-path correction, then green afterward. The first released-pin fixture run exposed that
TestResult_OutputPathresolves relative to the AnalyzerWorkingDirectory; Process now passes a.PSModule/TestResult/...path rather than duplicating the consumer-relative directory. The default and manifest fixtures pass at16077b909245356754319df78eb09cea7644ccd9. The artifact-root reference was added at2001551566898e59efc764e68450c2238667d607; its docs build and Markdown lint pass.Relevant issues (or links)
Related work