Skip to content

Issue Tracking

Shipwright integrates with issue trackers to provide bidirectional sync between pipelines and your project management tool. When a pipeline completes a stage, the tracker is updated automatically. When issues are created or updated in the tracker, they can trigger pipeline runs.

Supported Trackers

TrackerStatusFeatures
LinearFull supportBidirectional sync, status updates, stage comments
JiraFull supportBidirectional sync, status transitions, stage comments
GitHub IssuesBuilt-inAlways available, no configuration needed

Architecture

Shipwright uses a router pattern for tracker integration:

Pipeline → sw-tracker.sh (router) → sw-tracker-linear.sh
→ sw-tracker-jira.sh

The router reads ~/.shipwright/tracker-config.json to determine which provider to use, then delegates to the provider-specific script.

Configuration

Initial Setup

Terminal window
# Configure Linear
shipwright linear setup
# Configure Jira
shipwright jira setup

Configuration File

The tracker configuration lives at ~/.shipwright/tracker-config.json:

{
"provider": "linear",
"linear": {
"api_key": "lin_api_...",
"team_id": "TEAM-ID",
"project_id": "PROJECT-ID"
}
}

For Jira:

{
"provider": "jira",
"jira": {
"url": "https://yourcompany.atlassian.net",
"email": "you@company.com",
"api_token": "...",
"project_key": "PROJ"
}
}

Pipeline Integration

The pipeline automatically notifies the tracker at key points:

EventWhenWhat Gets Updated
Stage completeAfter each stage finishesStage name, duration, status
Stage failedWhen a stage failsError context, failed stage
PR createdAfter PR stagePR URL linked to issue
Pipeline completeOn successful completionIssue status moved to “Done”
Pipeline failedOn final failureIssue gets failure summary

Daemon Integration

The daemon also integrates with the tracker:

EventDescription
Job spawnedIssue marked as “In Progress”
Job completedIssue marked as “Done” with PR link
Job failedIssue updated with failure details

Commands

Terminal window
# Check current tracker configuration
shipwright tracker config
# Manual sync (usually automatic)
shipwright tracker notify stage_complete <issue> "<stage>|<duration>|<description>"
# Linear-specific commands
shipwright linear setup # Configure Linear
shipwright linear sync <issue> # Manual sync
# Jira-specific commands
shipwright jira setup # Configure Jira
shipwright jira sync <issue> # Manual sync

Disabling Tracker Integration

If you only want GitHub Issues (the default), simply don’t configure a tracker. The pipeline always posts progress comments to GitHub Issues regardless of tracker configuration.

To temporarily disable tracker notifications:

Terminal window
NO_TRACKER=true shipwright pipeline start --issue 42