Skip to content

feat(semaphore): add List Pipelines component#2901

Open
mici25 wants to merge 4 commits intosuperplanehq:mainfrom
mici25:feat/semaphore-list-pipelines
Open

feat(semaphore): add List Pipelines component#2901
mici25 wants to merge 4 commits intosuperplanehq:mainfrom
mici25:feat/semaphore-list-pipelines

Conversation

@mici25
Copy link

@mici25 mici25 commented Feb 5, 2026

Summary

  • Added Link-header pagination + URL-encoded filters for Semaphore List Pipelines.
  • Emit pipelines array payload to match docs/example output.
  • Updated tests for filters, limit, and pagination.

Changes

  • List Pipelines client now follows Link: rel="next" for pagination and enforces max 100.
  • Output payload is { pipelines: [...] } for downstream use.
  • Tests cover query params, limits, pagination, and error handling.

Tests

  • docker compose -f docker-compose.dev.yml exec app bash -c "mkdir -p /app/tmp/go-build && GOTMPDIR=/app/tmp/go-build go test -v ./pkg/integrations/semaphore/... -run ListPipelines"

Demo Video

test.mp4

Signed-off-by: mici25 <andreimm3221@yahoo.com>
Signed-off-by: mici25 <andreimm3221@yahoo.com>
@mici25 mici25 force-pushed the feat/semaphore-list-pipelines branch from 5a4b4a8 to bc2b495 Compare February 5, 2026 19:35
Signed-off-by: mici25 <andreimm3221@yahoo.com>
EMAIL_FROM_NAME: ${EMAIL_FROM_NAME:-SuperPlane}
EMAIL_FROM_ADDRESS: ${EMAIL_FROM_ADDRESS:-noreply@notifications.superplane.com}
BLOCK_SIGNUP: ${BLOCK_SIGNUP:-yes}
BLOCK_SIGNUP: ${BLOCK_SIGNUP:-no}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated BLOCK_SIGNUP default change appears accidentally committed

Medium Severity

The BLOCK_SIGNUP environment variable default changed from yes to no, which enables user signups by default in development. This change is unrelated to the Semaphore List Pipelines feature described in the PR title and description, suggesting it was accidentally committed. This alters security-related behavior in the development environment.

Fix in Cursor Fix in Web

Send(title, body, url, urlLabel string, receivers NotificationReceivers) error
}

type SecretsContext interface {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SSH component and related core interfaces accidentally deleted

High Severity

The entire SSH component (pkg/components/ssh/) was deleted along with related core interfaces: SecretsContext, ErrSecretKeyNotFound, the Secrets field in ExecutionContext, and FieldTypeSecretKey. This removes a complete feature and is unrelated to the PR's stated purpose of adding "List Pipelines" for Semaphore. Any workflows using the SSH component would break.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

}

params := &ListPipelinesParams{
ProjectID: metadata.Project.ID,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing nil check causes potential panic in Execute

Medium Severity

The Execute function accesses metadata.Project.ID without checking if metadata.Project is nil first. While the Setup function properly performs this check at line 193, the Execute function does not. If metadata fails to persist or becomes corrupted between Setup and Execute, accessing metadata.Project.ID will cause a nil pointer dereference panic.

Additional Locations (1)

Fix in Cursor Fix in Web

@AleksandarCole AleksandarCole added the bounty This issue has a bounty open label Feb 6, 2026
@AleksandarCole
Copy link
Collaborator

@mici25 thanks for trying this one out. The video needs to show the actual component working (actually returning the list of pipelines). You can check this guide on how to test 3rd party integrations with dev instance of SuperPlane: https://github.com/superplanehq/superplane/blob/main/docs/contributing/connecting-to-3rdparty-services-from-development.md

@mici25
Copy link
Author

mici25 commented Feb 6, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bounty This issue has a bounty open

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants