GitHub Action
orosu-ci/orosu is a pure-JS GitHub Action that launches a script on a remote orosu-server over an authenticated WebSocket connection, streams its stdout/stderr into the job log, and fails the step if the remote script exits non-zero. No Rust toolchain or binary install required — it runs directly on the node24 runner.
If you haven't set up a server and a keypair yet, start with Getting Started.
Usage
- name: Run a remote script
uses: orosu-ci/orosu@v0
with:
address: wss://ci.example.com/
script: deploy
key: ${{ secrets.OROSU_KEY }}
arguments: productionInputs
| Input | Required | Default | Description |
|---|---|---|---|
address | yes | Orosu server address. A WebSocket URL, e.g. wss://host:port/path or ws://host:port/path — scheme defaults to wss, path defaults to /. | |
script | yes | Name of the script to run, as configured on the server. | |
key | yes | Base64-encoded client private key, from orosu-keygen. Store this as a secret — never commit it. | |
arguments | no | '' | Space-separated arguments passed through to the remote script (e.g. "arg1 arg2 arg3"), available there as $1, $2, etc. |
file | no | '' | Newline-delimited glob patterns for file(s) to upload. Available on the remote as the ATTACHMENTS_DIR environment variable. |
chunk_size | no | 65536 | Chunk size in bytes used when uploading file. |
log_level | no | info | This action's own diagnostic log verbosity (debug|info|warning|error). Does not affect the remote script's own output. |
Uploading files
- name: Deploy a build artifact
uses: orosu-ci/orosu@v0
with:
address: wss://ci.example.com/
script: deploy
key: ${{ secrets.OROSU_KEY }}
file: |
dist/**Matched files are zipped and uploaded to the server before the script runs, and extracted into a temporary directory exposed to the script as $ATTACHMENTS_DIR.
Versioning
Releases are tagged vMAJOR.MINOR.PATCH. Pushing such a tag moves the floating vMAJOR and vMAJOR.MINOR tags to match it, so you can pin to whichever granularity you prefer:
uses: orosu-ci/orosu@v0 # latest 0.x
uses: orosu-ci/orosu@v0.5 # latest 0.5.x
uses: orosu-ci/orosu@v0.5.0 # exactThis action also declares an internal wire-protocol version, independent of the version above, that the server checks at connection time to catch client/server incompatibilities early. This is handled automatically — but if a step fails with an unexpected 400, a protocol-version mismatch between an outdated action and a newer (or older) orosu-server is a likely cause. Updating the action to a current tag resolves it.