Skip to content

Commit aecf28e

Browse files
docs: describe bundled workflow actions
1 parent b92a861 commit aecf28e

1 file changed

Lines changed: 54 additions & 33 deletions

File tree

DEPENDENCIES.md

Lines changed: 54 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4446
Each 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
143150
flowchart 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

Comments
 (0)