Pipelines
Pipelines shows a project's pipelines, their run history, and the log of each run. It is for project members who look up runs and for operators who need to know what it actually does on their installation.
[sys] pwsh runner is unavailable (plugin not loaded). That is why the Pipelines area stays hidden until a runner is present.
Getting started
Common tasks
| What you want | For whom | Where | Instructions |
|---|---|---|---|
| find out why the area is missing | everyone | project page | When the area appears |
| look at the run history | project members | screen by address | What works without a runner |
| read a log | project members | open a run | Reading a run log |
| start a run | wiki administrator | run history | Who can view and who can start |
| know what the package doesn't do | everyone | – | Limitations |
What works without a runner
| Screen | Address | Who |
|---|---|---|
| a project's pipelines | project page plus &do=wkdopipelines | project role Reader or higher |
| run history of a pipeline | …&op=runs&pipeline=<number> | Reader or higher |
| a single run with its log | …&op=run&run=<number> | Reader or higher |
| start a run (Run now) | button in the run history | wiki administrator only |
There is no way to create a pipeline, neither on a screen nor from the command line. A pipeline is a row in the storage of wkdostorage – name, action (action_id), default parameters – and nothing in the product calls the function that writes it. With an empty list, the screen says: No pipelines defined for this project yet.
When the area appears
The project rail and the dashboard show Pipelines only when the plugin is installed and some plugin registers both services: pwsh.catalog (the approved scripts) and pwsh.runner (execution). Without either one, nothing links there; the screens are still reachable by address.
The predecessor wvds-dw-pwsh-plugin registers these services on an event that is no longer fired, so it doesn't connect even when installed.
Who can view and who can start
| Action | Requires |
|---|---|
| view pipelines, runs, and logs | project role Reader or higher |
| start a run | wiki administrator – no project role is enough |
Every run records who started it.
Reading a run log
Each run has one log field of up to 512 KiB. A prefix shows where each line came from:
| Line | Source |
|---|---|
| no prefix | the script's standard output |
[err] … | the script's standard error |
[sys] … | the runner's own account |
If the log contains only [sys] lines, the script was never reached. The last one tells you why:
[sys] line | Meaning |
|---|---|
pipeline is disabled | The pipeline is switched off. |
pipeline has no action_id | The pipeline doesn't name a script. |
pwsh runner is unavailable (plugin not loaded) | No plugin registers pwsh.catalog and pwsh.runner. |
action '…' is not an allowlisted catalog script | The runner's catalog doesn't list the script. |
When the limit is reached, the log ends with [sys] [log truncated at 524288 bytes].
Configuration
None. Viewing follows the project role, starting is for the wiki administrator, and whether the area appears depends on the installed plugins and services.
Requirements
- PHP 8.2 or later.
- For runs that actually execute something: a plugin that registers
pwsh.catalogandpwsh.runner– not included in the product.
Limitations
- No runner and no way to create pipelines in the product; see above.
- A run executes inside the request that starts it. The page waits until the script finishes or PHP stops the request at
max_execution_time. There's no queue, no cancel, and no timeout of its own. A script that waits for input never finishes. - Manual start only. No trigger on push, pull request, or schedule; a run doesn't record a repository, branch, or commit.
- No artifacts, environments, approvals, or test results – a run has an exit code and a log.
- Not a replacement for Azure DevOps Pipelines.
Package details
Plugin: wkdopipelines
Namespace: lib/plugins/wkdopipelines/
Author: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
License: GPL 2