Inspiration

As a developer, I was frustrated by the constant context-switching between Jira, GitHub Actions, and GitLab CI to track deployment statuses. Teams waste hours manually updating issue statuses after pipeline runs, and critical failures often go unnoticed until someone manually checks. I wanted to build a solution that brings CI/CD visibility directly into Jira where development teams already work, eliminating friction and improving team productivity.

What it does

CI/CD Pipeline Dashboard for Jira is a unified monitoring solution that integrates both GitHub Actions and GitLab CI pipelines directly into Jira issues. The app provides:

  • Real-time pipeline status displayed in custom Jira issue panels with visual indicators (success/failed/running)

  • Dual platform support - automatically detects and displays pipelines from both GitHub Actions and GitLab CI

  • Smart automation - automatically transitions issue statuses based on pipeline results (In Progress → Ready for Review → Done)

  • Instant failure notifications - adds comments with error details and direct links to logs when pipelines fail

  • Rovo AI agent - enables conversational queries about pipeline status, failed deployments, and team-wide analytics

  • Team-wide visibility - developers can see pipeline metrics including success rates, average duration, and recent failures across the entire project

    How we built it

    The app is built using Atlassian Forge with a modern tech stack:

  • Frontend: Custom UI using React with Forge Bridge API for seamless Jira integration

  • Backend: Node.js 22.x on ARM64 architecture for optimal performance

  • Webhooks: Dual webhook handlers that process events from both GitHub Actions and GitLab CI in real-time

  • Storage: Forge Storage API with startsWith() queries for efficient pipeline data retrieval

  • AI Integration: Four Rovo agent actions with natural language prompts for conversational pipeline insights

  • Architecture: Event-driven design with defensive programming patterns for reliability

Key technical implementations:

Webhook payload normalization to handle different event structures from GitHub and GitLab

Auto-detection of CI/CD source platform with visual indicators (🐙 GitHub / 🦊 GitLab)

Forge resolver functions for fetching pipeline data and managing Jira transitions

Hot-reload development workflow for rapid iteration

Challenges we ran into

Storage API Limitations - Forge Storage doesn't support complex WHERE clauses with LIKE operators. I had to pivot to using startsWith() queries and implement client-side filtering for pattern matching.

Sandboxed iframe restrictions - Initial attempts to open external links via failed due to popup blockers. Solved by using Forge's router.open() API for proper navigation.

Dual platform complexity - GitHub Actions and GitLab CI have completely different webhook payload structures. I built a normalization layer that maps both to a unified data model, enabling the same UI to work seamlessly with both platforms.

Rovo without Premium tier - Testing Rovo Chat requires a Premium Atlassian account. I implemented a test interface within the Jira panel that directly invokes Rovo actions, demonstrating functionality without needing the chat UI.

Real-time updates - Coordinating webhook timing with Jira API rate limits required careful error handling and retry logic to ensure reliable status updates.

Accomplishments that we're proud of

Dual platform support - Most CI/CD integrations support only one platform. Supporting BOTH GitHub Actions and GitLab CI in a single app is unique and valuable for teams using multiple platforms

Production-ready quality - Successfully tested with real pipelines, verified auto-comments appearing within 39 seconds of failure, and confirmed status transitions work correctly

Complete Rovo implementation - Built 4 fully functional AI agent actions (getPipelineStatus, getFailedPipelines, getDeploymentHistory, getPipelineTrends) with working test interface

Zero manual configuration - The app auto-detects pipeline sources and extracts issue keys from commit messages, requiring no setup beyond webhook configuration

Enterprise-grade reliability - Defensive programming with fallbacks for undefined data, comprehensive error handling, and graceful degradation

What we learned

Forge limitations and workarounds - Learned the boundaries of Forge Storage API and creative solutions like startsWith() queries with client-side filtering

Event-driven architecture at scale - Designing webhook handlers that process thousands of events reliably requires careful thought about idempotency and error recovery

Cross-platform normalization - Building abstractions that work across different CI/CD platforms taught me valuable lessons about API design and data modeling

Rovo agent development - Gained deep understanding of configuring AI agents with natural language prompts and action modules

Developer experience - The importance of inline testing interfaces when external dependencies (like Premium tiers) aren't available

What's next for CI/CD Pipeline Dashboard for Jira

Short-term improvements:

Add @mention support in failure comments to notify assignees directly

Implement environment detection (staging vs production) for smarter status transitions

Add pipeline trigger button to run CI/CD directly from Jira

Support additional platforms (CircleCI, Jenkins, Azure Pipelines)

Long-term vision:

Deployment timeline visualization - Visual history of all deployments with filtering and search

Sprint/Epic analytics - Aggregate pipeline metrics across sprints showing success rates, MTTR, and deployment frequency

Predictive insights - Use historical data to predict pipeline failure likelihood and suggest fixes

Slack/Teams integration - Broadcast critical failures to communication channels

Custom workflows - Allow teams to configure their own status transitions and notification rules

The goal is to make this the go-to CI/CD monitoring solution for Atlassian ecosystem, helping thousands of development teams work faster and ship with confidence.

Built With

Share this project:

Updates