busbar-actions/Busbar — run CumulusCI under the nono sandbox

Run a CumulusCI flow/task against a Busbar-equipped Salesforce org with the OIDC-minted session injected proxy-side (cci never holds the token) and the process confined by nono (filesystem grants + ProxyOnly egress). Backed by the busbar-sandbox-run binary; self-mints via GitHub OIDC — the caller job MUST grant `permissions: id-token: write` and the org must have an active trust rule for this repository/workflow.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 4, 2026
License
None

Pinned Snippet

workflow.ymlSHA-pinned
uses: busbar-actions/cci-run@27c44d0ead1aa5bf85b257508fa832fcf76d22d9 # no releases — HEAD as of 2026-07-11

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
target-instanceInstance URL of the Busbar-equipped org (e.g. https://my.my.salesforce.com).yes
cci-argsCumulusCI arguments, e.g. `task run query --org dev -o object Organization -o query "SELECT Id, Name FROM Organization"` or `flow run dev_org --org dev`.yes
org-namecci org name to register via the EnvironmentProjectKeychain (matches --org in cci-args).nodev
cumulusci-versionpip version spec for CumulusCI (empty => latest).no""
working-directoryCumulusCI project directory (must contain cumulusci.yml).no.
allow-hostsExtra hosts the sandboxed child may reach over a plain CONNECT tunnel (comma-separated). The org host is always allowed.nopypi.org,files.pythonhosted.org
versionbusbar-sandbox-run release tag to download ("latest" resolves the most recent).nolatest
binary-repoGitHub repo that publishes the busbar-sandbox-run binary releases.nobusbar-actions/actions-dist
token-handlerOIDC token-exchange handler developer name in the org. Empty/default => busbar-auth's default (GitHubTokenExchangeHandler).noGitHubTokenExchangeHandler
eca-client-idOptional ECA consumer-key override for the OIDC exchange (empty => busbar-auth default).no""
keychain-packagepip install spec for the Busbar CumulusCI keychain (e.g. a path such as "$GITHUB_WORKSPACE/cumulusci" in the checked-out project, or a git URL). Empty => the keychain class must already be importable in the environment.no""
keychain-classDotted path of the CumulusCI keychain class that provisions the org through the Busbar proxy.nobusbar_cci_keychain.BusbarKeychain
audit-outPath to write the observed-endpoint declaration (host+method+path+decision, distilled from the proxy audit stream). Empty => not written.no""
allowlistPath to an endpoint declaration (from a prior audit-out run) to ENFORCE: the org route becomes default-deny, allowing only the recorded endpoints (dynamic path segments generalized to `*`). Empty => no enforcement.no""
expect-denialInvert the exit code for NEGATIVE enforcement tests. When `true`, this action SUCCEEDS (exit 0) if the sandboxed cci command is DENIED (fails, e.g. by the `allowlist`) and FAILS if it unexpectedly succeeds — so the step does not surface a spurious "Process completed with exit code 1".nofalse
artifact-nameName for the uploaded audit + generalized-fingerprint artifact. Must be UNIQUE within a workflow run — set a distinct value per cci-run step in a multi-step job (upload-artifact rejects duplicate names).nobusbar-sandbox-cci

no outputs