New to Kestra?
Use blueprints to kickstart your first workflows.
Analyze GitHub releases with AI. Detect breaking changes and security fixes, extract actionable migration steps, and dispatch alerts to Slack.
Modern software engineering teams depend on dozens of upstream open-source frameworks, database engines, and software development kits. When new versions are tagged, developers are often confronted with dense, multi-page changelogs containing hundreds of trivial commits alongside critical breaking API modifications or urgent security CVE patches. Manual changelog review is time-consuming and error-prone, frequently resulting in failed builds or production runtime regressions following routine dependency upgrades.
This blueprint provides an automated release advisor that inspects newly published releases from GitHub repositories. It uses Kestra's unified AI plugin with Google Gemini to analyze raw changelogs, classify breaking changes, extract concrete code migration instructions, compute an upgrade risk score, and deliver structured advisory cards directly to Slack. Stateful cursor tracking in Kestra's Key-Value store ensures repositories are only analyzed when new release tags appear.
fetch_latest_release (io.kestra.plugin.core.http.Request) queries the GitHub REST API to retrieve the latest published release tag and changelog markdown for the target repository.check_release_seen (io.kestra.plugin.core.output.OutputValues) compares the release tag against Kestra's internal Key-Value store (kv()) to determine whether this tag has already been evaluated.evaluate_release_status (io.kestra.plugin.core.flow.If) routes execution:force_analysis: false, log_up_to_date_status confirms the repository is up-to-date and exits cleanly.analyze_release_with_ai (io.kestra.plugin.ai.completion.ChatCompletion) passes the changelog to Google Gemini using a strict JSON schema contract.evaluate_cursor_persistence (io.kestra.plugin.core.flow.If) saves the processed release tag to the KV store via record_kv_cursor (io.kestra.plugin.core.kv.Set) when dry_run: false.notify_slack_advisory (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) dispatches a formatted advisory card to Slack highlighting the risk score, breaking changes, and migration checklist.dry_run: true to test analysis without mutating cursor state.Building this with ad-hoc cron scripts requires managing state files, handling LLM retries, and configuring external storage. Kestra provides native HTTP client tasks, built-in AI completion with schema validation, native Key-Value storage, and enterprise secrets management in a single declarative YAML workflow.
GITHUB_TOKEN in Kestra secrets to benefit from 5,000 requests per hour.gemini-3.5-flash./releases/latest endpoint automatically excludes drafts and prereleases, ensuring only official stable releases trigger advisories.GITHUB_TOKEN) with public repository read permissions.GEMINI_API_KEY) for structured changelog analysis.GITHUB_TOKEN: GitHub personal access token for authenticated API requests.GEMINI_API_KEY: API key for Google Gemini model inference.SLACK_WEBHOOK_URL: Slack incoming webhook URL for alert delivery.WEBHOOK_KEY: Secret key for authenticated GitHub webhook event ingestion.GITHUB_TOKEN, GEMINI_API_KEY, SLACK_WEBHOOK_URL, and WEBHOOK_KEY to your Kestra namespace secrets.force_analysis: true and dry_run: true to preview the AI analysis on your chosen repository.dry_run: false to allow the flow to maintain cursor state in the KV store.daily_dependency_check schedule trigger, or point a GitHub repository webhook to the github_release_webhook trigger for instant alerts on publish.io.kestra.plugin.core.flow.Loop to iterate over an organization's entire dependency catalog.io.kestra.plugin.github.issues.Create task to automatically open an upgrade planning issue in your core repository when risk scores exceed 7.