New to Kestra?
Use blueprints to kickstart your first workflows.
Triage GitHub issues by priority labels and send structured Discord embed alerts. Deterministic, zero-cost triage with no external AI dependencies.
Triaging active open-source or product repositories manually often leads to delayed response times for critical bugs. While AI-based summarization blueprints exist for Slack, many engineering teams run their operations in Discord and prefer deterministic, zero-cost triage that avoids third-party LLM API latency, token charges, and hallucination risks.
This blueprint automates GitHub issue triage using native label filtering (bug, critical, urgent, priority) and delivers structured, color-coded Discord embed alert cards straight into your team's incident or engineering channel via an incoming webhook. Routine issues are logged in Kestra's execution history without pinging Discord, avoiding notification fatigue while surfacing critical bugs in real time.
fetch_recent_issues): An HTTP request task (io.kestra.plugin.core.http.Request) queries GitHub's /issues REST API endpoint for the target repository, sorting by latest update timestamp.process_issues_loop): A flowable Loop task (io.kestra.plugin.core.flow.Loop) iterates through each returned issue.check_if_urgent): An If conditional task (io.kestra.plugin.core.flow.If) applies a jq filter to fromJson(item.value).labels to detect priority labels (bug, critical, urgent, priority).alert_discord_urgent): For matching priority issues, io.kestra.plugin.discord.DiscordIncomingWebhook formats and posts a rich Discord embed card with the issue number, author, state, and direct URL.log_routine_issue): Issues without priority labels are written to execution logs for traceability without triggering chat alerts.alert_api_failure): An errors block traps HTTP timeouts, token permission errors, or GitHub rate limits, alerting the team on Discord immediately.Ad-hoc cron scripts or serverless bots lack built-in retry mechanics, secret masking, and execution lineage. Kestra orchestrates the entire triage lifecycle in declarative YAML: scheduling sweeps, securely interpolating credentials, branching conditionally on issue labels, and posting actionable chatops alerts with complete audit history.
repo scope or fine-grained with Issues: Read-only permission).GITHUB_TOKEN: GitHub personal access token used in the Authorization header.DISCORD_WEBHOOK_URL: Full Discord incoming webhook URL (https://discord.com/api/webhooks/...).GITHUB_TOKEN and DISCORD_WEBHOOK_URL in your Kestra namespace or instance secrets.kestra-io/kestra (or configure your own repository).weekday_schedule trigger for automated sweeps every weekday at 09:00 UTC.jq filter in check_if_urgent to match your organization's labels (e.g., p0, severity/critical, security).fromJson(item.value).pull_request == null to exclude pull requests if your repository mixes PRs and issues on the endpoint.<@&ROLE_ID>) in the Discord payload to notify specific response rotations.