Skip to content

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'
InputRequiredDefaultPurpose
api-keyyesOrg API key (store as a secret)
organization-idyesOrganization ID
flow-idone ofRun a single flow
flow-idsone ofRun multiple flows
tagsone ofRun every flow matching the tags
match-modenoanyTag matching: any or all
environmentnoEnvironment key resolved at launch
version-idnoPin a published flow version
api-urlnoAlternate API base URL
cli-versionnoPin a CLI release
runner-versionnoPin a runner release
runner-binarynoPath to a preinstalled runner binary
poll-timeoutno300Seconds to wait for completion
parallelno1Flows to run concurrently

Exactly one of flow-id, flow-ids, or tags selects what runs.

OutputTypeMeaning
execution-id / execution-idsstringExecution ID(s) of the launched run(s)
statusstringcompleted, failed, or error
successstring'true' when every flow passed
results-jsonstringFull per-flow results as JSON

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.

name: checkout-smoke
on: [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 }}
name: smoke-suite
on: [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'

Run named flows against staging, pinned to a published version so the suite does not drift while a release is in flight:

name: staging-gate
on:
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'

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 1