GitHub Action
nanostack-dev/echopoint-cli@v1 runs flows ephemerally inside your workflow job:
the flow snapshot and resolved inputs are delivered to the runner process, the flow
executes there, and results are published back to Echopoint.
- uses: nanostack-dev/echopoint-cli@v1 with: api-key: ${{ secrets.ECHOPOINT_API_KEY }} organization-id: ${{ secrets.ECHOPOINT_ORG_ID }} tags: smoke parallel: '3'Inputs
Section titled “Inputs”| Input | Required | Default | Purpose |
|---|---|---|---|
api-key | yes | — | Org API key (store as a secret) |
organization-id | yes | — | Organization ID |
flow-id | one of | — | Run a single flow |
flow-ids | one of | — | Run multiple flows |
tags | one of | — | Run every flow matching the tags |
match-mode | no | any | Tag matching: any or all |
environment | no | — | Environment key resolved at launch |
version-id | no | — | Pin a published flow version |
api-url | no | — | Alternate API base URL |
cli-version | no | — | Pin a CLI release |
runner-version | no | — | Pin a runner release |
runner-binary | no | — | Path to a preinstalled runner binary |
poll-timeout | no | 300 | Seconds to wait for completion |
parallel | no | 1 | Flows to run concurrently |
Exactly one of flow-id, flow-ids, or tags selects what runs.
Outputs
Section titled “Outputs”| Output | Type | Meaning |
|---|---|---|
execution-id / execution-ids | string | Execution ID(s) of the launched run(s) |
status | string | completed, failed, or error |
success | string | 'true' when every flow passed |
results-json | string | Full per-flow results as JSON |
Required scopes
Section titled “Required scopes”The API key needs flows:execute and runner:complete. Add flows:read when
selecting flows with tags. The ci preset in the app covers these — see
API keys & permissions.
The action masks the API key in logs automatically, and resolved environment values are delivered only to the launched execution — they are never logged.
Example workflows
Section titled “Example workflows”Single flow on every push
Section titled “Single flow on every push”name: checkout-smokeon: [push]jobs: smoke: runs-on: ubuntu-latest steps: - uses: nanostack-dev/echopoint-cli@v1 with: api-key: ${{ secrets.ECHOPOINT_API_KEY }} organization-id: ${{ secrets.ECHOPOINT_ORG_ID }} flow-id: ${{ vars.CHECKOUT_SMOKE_FLOW_ID }}Tag suite, three flows in parallel
Section titled “Tag suite, three flows in parallel”name: smoke-suiteon: [pull_request]jobs: smoke: runs-on: ubuntu-latest steps: - uses: nanostack-dev/echopoint-cli@v1 with: api-key: ${{ secrets.ECHOPOINT_API_KEY }} organization-id: ${{ secrets.ECHOPOINT_ORG_ID }} tags: smoke match-mode: any parallel: '3'Environment and version pinned
Section titled “Environment and version pinned”Run named flows against staging, pinned to a published version so the suite does
not drift while a release is in flight:
name: staging-gateon: push: branches: [main]jobs: gate: runs-on: ubuntu-latest steps: - uses: nanostack-dev/echopoint-cli@v1 with: api-key: ${{ secrets.ECHOPOINT_API_KEY }} organization-id: ${{ secrets.ECHOPOINT_ORG_ID }} flow-ids: ${{ vars.RELEASE_GATE_FLOW_IDS }} environment: staging version-id: ${{ vars.CHECKOUT_SMOKE_VERSION_ID }} poll-timeout: '600'Consume the outputs
Section titled “Consume the outputs”Give the step an id and branch on success or parse results-json:
jobs: smoke: runs-on: ubuntu-latest steps: - uses: nanostack-dev/echopoint-cli@v1 id: echopoint with: api-key: ${{ secrets.ECHOPOINT_API_KEY }} organization-id: ${{ secrets.ECHOPOINT_ORG_ID }} tags: smoke - name: Report results if: always() run: | echo "status=${{ steps.echopoint.outputs.status }}" echo '${{ steps.echopoint.outputs.results-json }}' | jq . - name: Block deploy on failure if: steps.echopoint.outputs.success != 'true' run: exit 1Next steps
Section titled “Next steps”- CLI — the same runs from any CI system or your terminal
- API keys & permissions — create the key with the ci preset
- Versions & publishing — publish the versions you pin
- Executions & live runs — inspect results in the app