[Semaphore] Add Get Pipeline Component#3081
[Semaphore] Add Get Pipeline Component#3081ainiroadmike-openclaw wants to merge 3 commits intosuperplanehq:mainfrom
Conversation
Implements a new component to retrieve billable GitHub Actions usage for orgs and repos. - Adds Get Workflow Usage action component - Supports org-wide and per-repo usage queries - Filters by time range (year/month/day) and runner OS/SKU - Returns total minutes and breakdown by OS - Updates GitHub App manifest to request admin:read permission for billing API access Fixes superplanehq#2277
Implements Linear project management integration for SuperPlane. Features: - Personal API key authentication - GraphQL client for Linear API - Create Issue action component - On Issue Created trigger with team/label filtering - Webhook handler for Linear events - Team resource listing - Comprehensive tests Components: - linear.createIssue: Create issues with team, title, description, assignee, priority, state, labels - linear.onIssueCreated: Trigger workflows on new issue creation Fixes superplanehq#2485
Implements pipeline status fetching for Semaphore CI/CD. Features: - Fetch pipeline by ID - Returns name, pipeline ID, workflow ID, state, and result - Enables workflow branching based on pipeline state/result - Comprehensive validation and tests Use cases: - Status polling after Run Workflow - Result verification from event data - Conditional workflows based on build status Fixes superplanehq#2827
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 5 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
This is the final PR Bugbot will review for you during this billing cycle
Your free Bugbot reviews will reset on March 12
Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| Type: "repository", | ||
| Search: true, | ||
| Multi: true, | ||
| }, |
There was a problem hiding this comment.
Repository selector uses wrong value type
High Severity
repositories is configured as an integration resource without UseNameAsValue, but Execute treats each selected value as a repository name in the /repos/{owner}/{repo} path. The resource system returns repository IDs by default, so repo-scoped requests are built with IDs and fail.
Additional Locations (1)
| } | ||
|
|
||
| usageData.MinutesUsed = response.TotalPaidMinutesUsed | ||
| usageData.TotalPaidMinutes = response.TotalPaidMinutesUsed |
There was a problem hiding this comment.
Minutes output duplicates paid minutes
Medium Severity
minutes_used is assigned from TotalPaidMinutesUsed instead of TotalMinutesUsed, while total_paid_minutes is also set from paid minutes. This collapses two different metrics into one and returns incorrect usage values for minutes_used.
Additional Locations (1)
| } | ||
|
|
||
| if _, err := client.Do(context.Background(), req, &response); err != nil { | ||
| continue |
There was a problem hiding this comment.
Repo fetch failures are silently ignored
Medium Severity
Per-repository errors in request creation and API execution are swallowed with continue, so Execute can return success with partial or empty usage data. This hides invalid repositories and transient API failures from workflow logic.
Additional Locations (1)
| ctx.Integration.EmitEvent(core.IntegrationEvent{ | ||
| Type: "webhook", | ||
| Metadata: map[string]interface{}{"webhook": webhookData}, | ||
| }) |
There was a problem hiding this comment.
| return nil | ||
| } | ||
| return metadata.Team | ||
| } |


Summary
Adds Get Pipeline component to fetch Semaphore pipeline status by ID.
Changes
semaphore.getPipelineConfiguration
Output
Use Cases
Testing
Closes #2827
Demo video will be added after initial review.