CI - nself-org/plugins GitHub Wiki
| Field | Value |
|---|---|
| Licence | Free (MIT) |
| Maturity | implemented (maturity levels) |
| Version | 1.2.11 |
| Install | nself plugin install ci |
| Commands |
nself ci: build, forgejo, nodes provision, nodes verify, run, serve
|
| Requirements | nSelf >=1.4.12 |
Runs the local lint/test/build/gitleaks gate and posts the result as a GitHub commit status.
nself plugin install ciNo license key required.
Local CI gate runner: detects repo stack (Go/Node/Flutter/Dart), runs lint+test+build, scans secrets with gitleaks, then posts a GitHub commit status (nself-ci) via gh OAuth. Replaces billing-blocked GitHub Actions as the merge gate.
This is a CLI plugin: it installs the nself-ci binary into your plugin path and runs as a command, not a background service.
Category: development. Current version: 1.0.1.
| Env Var | Default | Description |
|---|---|---|
NSELF_CI_REPO |
(see plugin.json) | Optional. |
NSELF_CI_SHA |
(see plugin.json) | Optional. |
NSELF_CI_SKIP_STATUS |
(see plugin.json) | Optional. |
NSELF_CI_TIMEOUT |
(see plugin.json) | Optional. |
nself-ciThe nself-ci binary accepts the exact argv of core nself ci:
| Command | Description |
|---|---|
nself-ci [flags] [repo-root] |
Run the gate. Flags: --check, --no-status, --no-gitleaks, --sha, --owner, --repo, -v, --filesystem. |
nself-ci build [flags] [dir] |
Build a signed Android release artifact locally; --upload --tag T attaches it to a GitHub release. |
nself-ci forgejo [--url U] [--runner R] |
Forgejo server and runner health (ops profile). |
nself-ci serve [flags] |
Webhook listener daemon on port 3845; fail-closed (secret, allowlist, Docker). |
nself-ci run [flags] [search-root] |
Run the .ci.yaml pipeline. |
The manifest is v2 with a commands block (command: ci, binary: nself-ci). ci eval is not part of this plugin. The runner host commands are below.
Ported from core nself runner provision|verify (P7-CANON-10) with the same flags, messages and exit codes. Both are dispatched as nself ci nodes <verb> or nself-ci nodes <verb>. The dependency set is one declarative manifest compiled into the binary, so a freshly provisioned host and a "should be identical" host are checked against the same list.
| Command | Description |
|---|---|
nself-ci nodes verify [--host user@host]... [--ssh-key K] [--json] |
Check each host against the manifest (packages, a real _work directory, cached Chromium libraries) and print a parity matrix. No --host checks this machine. Exits 1 on a failing check, an unreachable host or drift between hosts. |
nself-ci nodes provision --github-url U [--host user@host] [--instances N] [--install-root D] [--labels a,b] [--ssh-key K] [--token T] |
Install the dependencies, create the runner user with passwordless sudo, ensure a real _work directory and register N runner instances as systemd services. Every step is idempotent. No --host provisions this machine. |
- The registration token comes from
--tokenor theGITHUB_RUNNER_TOKENenvironment variable, never from a project.env, and is never printed. -
provisiontakes at most one--hostper run, and refuses a_workthat is a symlink. - Every ssh call goes through the vendored cli
sdk/go/remote(one exec funnel, destination allowlist,--before the destination). A test (TestSingleSSHExecSite) fails if free/ci gains a second ssh or scp exec site. - Exit status follows core: 1 for a refusal or a failed step, or the status of the failed ssh or remote command (255 for a connection error).
-
scripts/parity-nodes.shcompares stdout, stderr, exit code, the ssh argv and the commands a stubbed host recorded against a core build, using disposable local sshd containers only.
Manifest: plugins/ci/plugin.json
- Forgejo — self-hosted git + Actions runner
- GitHub-Runner — self-hosted GitHub Actions runner
← Home →