mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-29 20:05:25 +08:00
53 lines
2.7 KiB
Markdown
53 lines
2.7 KiB
Markdown
# Published plugins in regression runs
|
|
|
|
`regression_ci.py` and `regression_job.py` default to the latest published
|
|
LocalAgent, LangRAG and GeneralParsers packages from the official LangBot
|
|
marketplace. Plugin preparation happens before business testing. Each run reads
|
|
`latest_version` once for each plugin, downloads that exact version, and fails
|
|
if metadata, downloads, package identity, installation or initialization fail.
|
|
There is no fallback to older releases, cached packages or a source checkout.
|
|
|
|
The source runner needs the normal Core/SDK dependencies, Docker and `lbctl`:
|
|
|
|
```sh
|
|
python tools/regression_ci.py --lbctl /path/to/lbctl --output /path/to/new-run
|
|
```
|
|
|
|
The released deployment runner uses its existing job profile:
|
|
|
|
```sh
|
|
python tools/regression_job.py run --profile tools/regression_profiles/job.json --output /path/to/new-run
|
|
```
|
|
|
|
The job's default `plugin_mode` is `published`; its suite's `plugins` entries
|
|
are replaced by the published preparation. Set `"plugin_mode": "profile"` in
|
|
the job JSON to explicitly use the suite's existing local/GitHub/marketplace
|
|
inputs. For source development, `regression_ci.py --plugins /path/to/langbot-plugins`
|
|
retains packaging from a source checkout.
|
|
|
|
Each published run keeps `plugins/manifest.json` and the downloaded ZIPs under
|
|
its output directory. The manifest records the official metadata/download URLs,
|
|
selected versions, SHA-256 hashes and installation readback (actual version,
|
|
enabled state and initialized status). Archive identity/version must match the
|
|
release metadata; the CLI must report that same version as enabled and initialized.
|
|
Dependency or SDK incompatibility is a preparation failure and is not downgraded.
|
|
|
|
To replay an earlier run, pass its manifest to the source runner:
|
|
|
|
```sh
|
|
python tools/regression_ci.py --lbctl /path/to/lbctl --output /path/to/replay --plugin-manifest /path/to/earlier/plugins/manifest.json
|
|
```
|
|
|
|
For the deployment runner, set `"plugin_manifest": "/path/to/earlier/plugins/manifest.json"`
|
|
in the job JSON. Relative paths are resolved from the job profile directory.
|
|
Replay downloads the recorded versions from the official marketplace without
|
|
querying latest metadata and requires the recorded hashes. Missing or changed
|
|
packages fail; retain the manifest and ZIPs as evidence. Supplied URLs cannot
|
|
redirect replay to another registry or add other plugin identities.
|
|
|
|
Installation uses `lbctl plugin install local --file <downloaded-ZIP> --wait`
|
|
so the installed bytes are the ones whose hashes were recorded. This exercises
|
|
published package compatibility and initialization; it does not exercise the
|
|
marketplace install/upgrade endpoint itself. Workflow callers must omit their
|
|
explicit `--plugins` argument to select the default published mode.
|