@@ -15,7 +15,8 @@ action those workflows call.
1515 - [ Non-PowerShell toolchains] ( #non-powershell-toolchains )
1616 - [ Dependency reference] ( #dependency-reference )
1717 - [ Reusable workflows] ( #reusable-workflows )
18- - [ PSModule actions] ( #psmodule-actions )
18+ - [ Bundled PSModule actions] ( #bundled-psmodule-actions )
19+ - [ External PSModule actions] ( #external-psmodule-actions )
1920 - [ Third-party actions] ( #third-party-actions )
2021 - [ PowerShell modules] ( #powershell-modules )
2122 - [ Python packages] ( #python-packages )
@@ -31,20 +32,22 @@ Process-PSModule depends on several distinct kinds of artifact. The tree tracks
3132| Layer | Type | What it is | Examples |
3233| --- | --- | --- | --- |
3334| 1 | Reusable workflows | GitHub Actions workflows called with ` uses: ./... ` | ` workflow.yml ` and 15 stage workflows |
34- | 2 | PSModule actions | Composite actions maintained in the PSModule organization | ` GitHub-Script ` , ` Build-PSModule ` , ` Invoke-Pester ` |
35- | 3 | Third-party actions | Actions maintained outside the PSModule organization | ` actions/checkout ` , ` actions/deploy-pages ` |
36- | 4 | Container image | A Docker action that runs a published image | ` super-linter/super-linter ` |
37- | 5 | PowerShell modules (framework) | Runtime modules that power the PSModule actions | ` GitHub ` , ` Context ` , ` Sodium ` |
38- | 6 | PowerShell modules (tooling) | Runtime modules that provide build, test, lint, and docs tools | ` Pester ` , ` PSScriptAnalyzer ` , ` Microsoft.PowerShell.PlatyPS ` |
39- | 7 | PowerShell module (bundled) | A module vendored inside an action instead of installed from a registry | ` Helpers ` |
40- | 8 | Python packages | ` pip ` packages installed to build the documentation site | ` mkdocs-material ` and MkDocs plugins |
35+ | 2 | Bundled PSModule actions | Composite actions maintained in ` .github/actions/ ` | ` Build-PSModule ` , ` Get-PSModuleSettings ` , ` Test-PSModule ` |
36+ | 3 | External PSModule actions | Composite actions consumed from separate PSModule repositories | ` GitHub-Script ` , ` Invoke-Pester ` , ` Invoke-ScriptAnalyzer ` |
37+ | 4 | Third-party actions | Actions maintained outside the PSModule organization | ` actions/checkout ` , ` actions/deploy-pages ` |
38+ | 5 | Container image | A Docker action that runs a published image | ` super-linter/super-linter ` |
39+ | 6 | PowerShell modules (framework) | Runtime modules that power the PSModule actions | ` GitHub ` , ` Context ` , ` Sodium ` |
40+ | 7 | PowerShell modules (tooling) | Runtime modules that provide build, test, lint, and docs tools | ` Pester ` , ` PSScriptAnalyzer ` , ` Microsoft.PowerShell.PlatyPS ` |
41+ | 8 | PowerShell module (bundled) | A module vendored inside an action instead of installed from a registry | ` Helpers ` |
42+ | 9 | Python packages | ` pip ` packages installed to build the documentation site | ` mkdocs-material ` and MkDocs plugins |
4143
4244## Where the tree stops
4345
4446Each layer has a defined boundary so the tree stays finite and stable:
4547
4648- ** Reusable workflows** — the 15 stage workflows called by ` workflow.yml ` . They do not call further workflows.
47- - ** PSModule actions** — expanded fully; the leaves are ` GitHub-Script ` and ` Install-PSModuleHelpers ` .
49+ - ** Bundled PSModule actions** — expanded fully; the leaves are the bundled ` Install-PSModuleHelpers ` action and the external actions listed below.
50+ - ** External PSModule actions** — treated as leaves at their pinned commits. Their internal steps are not expanded.
4851- ** Third-party actions** — treated as leaves at the pinned commit. Their internal steps are not expanded.
4952- ** Container image** — the leaf is the ` super-linter ` image. The many linters bundled inside it are not enumerated.
5053- ** PowerShell modules** — expanded through their ` RequiredModules ` to the leaf modules. ` Helpers ` is a leaf because it ships inside the action.
@@ -82,18 +85,22 @@ flowchart LR
8285 w15["Publish-Site"]
8386 end
8487
85- subgraph PSA[" PSModule actions"]
88+ subgraph BPSA["Bundled PSModule actions"]
8689 aSettings["Get-PSModuleSettings"]
8790 aBuild["Build-PSModule"]
8891 aTest["Test-PSModule"]
89- aISA["Invoke-ScriptAnalyzer"]
90- aIP["Invoke-Pester"]
9192 aIH["Install-PSModuleHelpers"]
92- aGitHubScript["GitHub-Script"]
9393 aResults["Get-PesterTestResults"]
9494 aCov["Get-PesterCodeCoverage"]
9595 aPub["Publish-PSModule"]
9696 aDoc["Document-PSModule"]
97+ aVersion["Resolve-PSModuleVersion"]
98+ end
99+
100+ subgraph EPSA["External PSModule actions"]
101+ aISA["Invoke-ScriptAnalyzer"]
102+ aIP["Invoke-Pester"]
103+ aGitHubScript["GitHub-Script"]
97104 end
98105
99106 subgraph EXT["Third-party actions"]
@@ -112,7 +119,7 @@ flowchart LR
112119
113120 PPM --> w1 & w2 & w3 & w4 & w5 & w6 & w7 & w8 & w9 & w10 & w11 & w12 & w13 & w14 & w15
114121
115- w1 --> xCheckout & aSettings
122+ w1 --> xCheckout & aSettings & aVersion
116123 w2 --> xCheckout & xSL
117124 w3 --> xCheckout & aBuild
118125 w4 --> xCheckout & aTest
@@ -135,24 +142,28 @@ flowchart LR
135142
136143## Action foundation and PowerShell modules
137144
138- Most PSModule actions build on two foundations: ` GitHub-Script ` , which runs a script with the ` GitHub ` module installed and authenticated , and
139- ` Install-PSModuleHelpers ` , which loads a bundled ` Helpers ` module. The test, lint, and docs actions add their own tooling modules. At the bottom of the
140- tree, ` GitHub ` resolves its own ` RequiredModules ` from the PowerShell Gallery.
145+ The bundled actions use two foundations: the local ` Install-PSModuleHelpers ` action , which loads the bundled ` Helpers ` module, and external
146+ ` GitHub-Script ` , which runs a script with the ` GitHub ` module installed and authenticated . The test, lint, and docs actions add their own tooling
147+ modules. At the bottom of the tree, ` GitHub ` resolves its own ` RequiredModules ` from the PowerShell Gallery.
141148
142149``` mermaid
143150flowchart LR
144- subgraph PSA["PSModule actions"]
145- aGitHubScript["GitHub-Script"]
151+ subgraph BPSA["Bundled PSModule actions"]
146152 aIH["Install-PSModuleHelpers"]
147- aIP["Invoke-Pester"]
148- aISA["Invoke-ScriptAnalyzer"]
149153 aDoc["Document-PSModule"]
150154 aSettings["Get-PSModuleSettings"]
151155 aCov["Get-PesterCodeCoverage"]
152156 aResults["Get-PesterTestResults"]
153157 aBuild["Build-PSModule"]
154158 aPub["Publish-PSModule"]
155159 aTest["Test-PSModule"]
160+ aVersion["Resolve-PSModuleVersion"]
161+ end
162+
163+ subgraph EPSA["External PSModule actions"]
164+ aGitHubScript["GitHub-Script"]
165+ aIP["Invoke-Pester"]
166+ aISA["Invoke-ScriptAnalyzer"]
156167 end
157168
158169 subgraph EXT["Third-party actions"]
@@ -190,6 +201,7 @@ flowchart LR
190201 aBuild --> aIH & xUl
191202 aPub --> aIH & xDl
192203 aTest --> aIH & aIP
204+ aVersion --> aIH
193205
194206 mGitHub --> mContext & mUri & mHash & mSodium & mCasing & mTimeSpan
195207 mContext --> mSodium
@@ -244,7 +256,7 @@ The 15 stage workflows called by `workflow.yml`, in lifecycle order.
244256
245257| Workflow | Stage | Key actions used |
246258| --- | --- | --- |
247- | Get-Settings | Load configuration | Get-PSModuleSettings |
259+ | Get-Settings | Load configuration and resolve the next version | Get-PSModuleSettings, Resolve-PSModuleVersion |
248260| Lint-Repository | Repository linting | super-linter |
249261| Build-Module | Build the module | Build-PSModule |
250262| Test-SourceCode | Source code tests | Test-PSModule |
@@ -260,23 +272,32 @@ The 15 stage workflows called by `workflow.yml`, in lifecycle order.
260272| Build-Site | Build the documentation site | GitHub-Script, Install-PSModuleHelpers, MkDocs |
261273| Publish-Site | Deploy to GitHub Pages | actions/configure-pages, actions/deploy-pages |
262274
263- ### PSModule actions
275+ ### Bundled PSModule actions
276+
277+ Composite actions bundled with Process-PSModule under ` .github/actions/ ` . They are checked out at the invoked reusable workflow revision and called
278+ from ` ./_wf/.github/actions/<name> ` .
279+
280+ | Action | Purpose | Depends on |
281+ | --- | --- | --- |
282+ | Install-PSModuleHelpers | Load the bundled Helpers module | Helpers (bundled) |
283+ | Get-PSModuleSettings | Read and resolve the settings file | GitHub-Script, powershell-yaml, Hashtable |
284+ | Resolve-PSModuleVersion | Resolve the next module version | Install-PSModuleHelpers, PSSemVer |
285+ | Build-PSModule | Compile source into a module | Install-PSModuleHelpers, actions/upload-artifact |
286+ | Test-PSModule | Run framework and module tests | Install-PSModuleHelpers, Invoke-Pester |
287+ | Get-PesterTestResults | Aggregate test results | GitHub-Script |
288+ | Get-PesterCodeCoverage | Aggregate code coverage | GitHub-Script, Markdown |
289+ | Publish-PSModule | Publish to the PowerShell Gallery | Install-PSModuleHelpers, actions/download-artifact |
290+ | Document-PSModule | Generate documentation | Install-PSModuleHelpers, Microsoft.PowerShell.PlatyPS |
291+
292+ ### External PSModule actions
264293
265- Composite actions maintained in the [ PSModule organization] ( https://github.com/PSModule ) .
294+ Composite actions maintained in separate [ PSModule organization] ( https://github.com/PSModule ) repositories and consumed at pinned commits .
266295
267296| Action | Purpose | Depends on |
268297| --- | --- | --- |
269298| [ GitHub-Script] ( https://github.com/PSModule/GitHub-Script ) | Run PowerShell with the GitHub module installed | GitHub module |
270- | [ Install-PSModuleHelpers] ( https://github.com/PSModule/Install-PSModuleHelpers ) | Load the bundled Helpers module | Helpers (bundled) |
271- | [ Get-PSModuleSettings] ( https://github.com/PSModule/Get-PSModuleSettings ) | Read and resolve the settings file | GitHub-Script, powershell-yaml, Hashtable |
272- | [ Build-PSModule] ( https://github.com/PSModule/Build-PSModule ) | Compile source into a module | Install-PSModuleHelpers, actions/upload-artifact |
273- | [ Test-PSModule] ( https://github.com/PSModule/Test-PSModule ) | Run framework and module tests | Install-PSModuleHelpers, Invoke-Pester |
274299| [ Invoke-Pester] ( https://github.com/PSModule/Invoke-Pester ) | Run Pester test suites | GitHub-Script, actions/upload-artifact, Pester, Markdown |
275300| [ Invoke-ScriptAnalyzer] ( https://github.com/PSModule/Invoke-ScriptAnalyzer ) | Run PSScriptAnalyzer rules | GitHub-Script, Invoke-Pester, PSScriptAnalyzer |
276- | [ Get-PesterTestResults] ( https://github.com/PSModule/Get-PesterTestResults ) | Aggregate test results | GitHub-Script |
277- | [ Get-PesterCodeCoverage] ( https://github.com/PSModule/Get-PesterCodeCoverage ) | Aggregate code coverage | GitHub-Script, Markdown |
278- | [ Publish-PSModule] ( https://github.com/PSModule/Publish-PSModule ) | Publish to the PowerShell Gallery | Install-PSModuleHelpers, actions/download-artifact |
279- | [ Document-PSModule] ( https://github.com/PSModule/Document-PSModule ) | Generate documentation | Install-PSModuleHelpers, Microsoft.PowerShell.PlatyPS |
280301
281302### Third-party actions
282303
@@ -295,7 +316,7 @@ Actions maintained outside the PSModule organization, treated as leaves at their
295316
296317### PowerShell modules
297318
298- Runtime modules installed from the PowerShell Gallery, except ` Helpers ` , which is bundled inside ` Install-PSModuleHelpers ` .
319+ Runtime modules installed from the PowerShell Gallery, except ` Helpers ` , which is bundled in ` .github/actions/ Install-PSModuleHelpers` .
299320
300321| Module | Owner | Role | Depends on |
301322| --- | --- | --- | --- |
0 commit comments