Skip to content

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

yaml
- name: Run a remote script
  uses: orosu-ci/orosu@v0
  with:
    address: wss://ci.example.com/
    script: deploy
    key: ${{ secrets.OROSU_KEY }}
    arguments: production

Inputs

InputRequiredDefaultDescription
addressyesOrosu server address. A WebSocket URL, e.g. wss://host:port/path or ws://host:port/path — scheme defaults to wss, path defaults to /.
scriptyesName of the script to run, as configured on the server.
keyyesBase64-encoded client private key, from orosu-keygen. Store this as a secret — never commit it.
argumentsno''Space-separated arguments passed through to the remote script (e.g. "arg1 arg2 arg3"), available there as $1, $2, etc.
fileno''Newline-delimited glob patterns for file(s) to upload. Available on the remote as the ATTACHMENTS_DIR environment variable.
chunk_sizeno65536Chunk size in bytes used when uploading file.
log_levelnoinfoThis action's own diagnostic log verbosity (debug|info|warning|error). Does not affect the remote script's own output.

Uploading files

yaml
- 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:

yaml
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  # exact

This 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.