Skip to content

Semaphore

Run and react to your Semaphore workflows

The On Pipeline Done trigger starts a workflow execution when a Semaphore pipeline completes.

  • Pipeline orchestration: Chain workflows together based on pipeline completion
  • Status monitoring: Monitor CI/CD pipeline results
  • Notification workflows: Send notifications when pipelines succeed or fail
  • Post-processing: Process artifacts or results after pipeline completion
  • Project: Select the Semaphore project to monitor

Each pipeline done event includes:

  • pipeline: Pipeline information including ID, state, and result
  • workflow: Workflow information including ID and URL
  • project: Project information
  • result: Pipeline result (passed, failed, stopped, etc.)
  • state: Pipeline state (done)

This trigger automatically sets up a Semaphore webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.

{
"data": {
"blocks": [
{
"jobs": [
{
"id": "00000-00000-00000-00000-00000",
"index": 0,
"name": "Report result to SuperPlane",
"result": "passed",
"status": "finished"
}
],
"name": "Block #1",
"result": "passed",
"result_reason": "test",
"state": "done"
}
],
"organization": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "test"
},
"pipeline": {
"created_at": "2026-01-19T12:00:00Z",
"done_at": "2026-01-19T12:00:00Z",
"error_description": "",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Initial Pipeline",
"pending_at": "2026-01-19T12:00:00Z",
"queuing_at": "2026-01-19T12:00:00Z",
"result": "passed",
"result_reason": "test",
"running_at": "2026-01-19T12:00:00Z",
"state": "done",
"stopping_at": "1970-01-01T00:00:00Z",
"working_directory": ".semaphore",
"yaml_file_name": "semaphore.yml"
},
"project": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "test"
},
"repository": {
"slug": "test/test",
"url": "https://github.com/test/test"
},
"revision": {
"branch": {
"commit_range": "0000000000000000000000000000000000000000^...0000000000000000000000000000000000000000",
"name": "test"
},
"commit_message": "Merge branch 'test' into test",
"commit_sha": "0000000000000000000000000000000000000000",
"pull_request": null,
"reference": "refs/heads/test",
"reference_type": "branch",
"sender": {
"avatar_url": "https://avatars2.githubusercontent.com/u/0000000000000000000000000000000000000000?s=460\u0026v=4",
"email": "test@test.com",
"login": "test"
},
"tag": null
},
"version": "1.0.0",
"workflow": {
"created_at": "2026-01-19T12:00:00Z",
"id": "00000000-0000-0000-0000-000000000000",
"initial_pipeline_id": "00000000-0000-0000-0000-000000000000"
}
},
"timestamp": "2026-01-19T12:00:00Z",
"type": "semaphore.pipeline.done"
}

The Run Workflow component triggers a Semaphore CI/CD workflow and waits for it to complete.

  • CI/CD orchestration: Trigger builds and deployments from SuperPlane workflows
  • Pipeline automation: Run Semaphore pipelines as part of workflow automation
  • Multi-stage deployments: Coordinate complex deployment pipelines
  • Workflow chaining: Chain multiple Semaphore workflows together
  1. Creates and starts a Semaphore workflow with the specified pipeline file and parameters
  2. Waits for the pipeline to complete (monitored via webhook and polling)
  3. Routes execution based on pipeline result:
    • Passed channel: Pipeline completed successfully
    • Failed channel: Pipeline failed or was cancelled
  • Project: Select the Semaphore project containing the workflow
  • Pipeline File: Path to the pipeline YAML file (e.g., .semaphore/pipeline.yml)
  • Ref: Git reference to run the workflow on (branch, tag, or commit SHA)
  • Commit SHA: Optional specific commit SHA to run (if not provided, uses latest from ref)
  • Parameters: Optional workflow parameters as key-value pairs (supports expressions)
  • Passed: Emitted when pipeline completes successfully
  • Failed: Emitted when pipeline fails or is cancelled
  • The component automatically sets up webhook monitoring for pipeline completion
  • Falls back to polling if webhook doesn’t arrive
  • Can be cancelled, which will stop the running Semaphore workflow
{
"data": {
"blocks": [
{
"jobs": [
{
"id": "00000-00000-00000-00000-00000",
"index": 0,
"name": "Job #1",
"result": "passed",
"status": "finished"
}
],
"name": "Block #1",
"result": "passed",
"result_reason": "test",
"state": "done"
}
],
"organization": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "test"
},
"pipeline": {
"created_at": "2026-01-22T15:32:47Z",
"done_at": "2026-01-22T15:32:55Z",
"error_description": "",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Initial Pipeline",
"pending_at": "2026-01-22T15:32:48Z",
"queuing_at": "2026-01-22T15:32:48Z",
"result": "passed",
"result_reason": "test",
"running_at": "2026-01-22T15:32:48Z",
"state": "done",
"stopping_at": "1970-01-01T00:00:00Z",
"working_directory": ".semaphore",
"yaml_file_name": "semaphore.yml"
},
"project": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "test"
},
"repository": {
"slug": "test/test",
"url": "https://github.com/test/test"
},
"revision": {
"branch": {
"commit_range": "0000000000000000000000000000000000000000^...0000000000000000000000000000000000000000",
"name": "test"
},
"commit_message": "test",
"commit_sha": "0000000000000000000000000000000000000000",
"pull_request": null,
"reference": "refs/heads/test",
"reference_type": "branch",
"sender": {
"avatar_url": "https://example.com/avatar.png",
"email": "test@test.com",
"login": "test"
},
"tag": null
},
"version": "1.0.0",
"workflow": {
"created_at": "2026-01-22T15:32:47Z",
"id": "00000000-0000-0000-0000-000000000000",
"initial_pipeline_id": "00000000-0000-0000-0000-000000000000"
}
},
"timestamp": "2026-01-22T15:32:56.061430218Z",
"type": "semaphore.workflow.finished"
}