If icon
Move icon
DiscordIncomingWebhook icon
Webhook icon

Move Trello Release Cards from CI Deploys with Stage Routing and Discord Notes

Move Trello release cards automatically from CI webhooks with Kestra. Route staging and production deploys to the right column and notify Discord.

Categories
Business

A release board that people update by hand is a release board that lies. This blueprint lets the deploy pipeline move the card itself: CI posts a small JSON payload to a Kestra webhook when a deploy finishes, an io.kestra.plugin.core.flow.If task maps the reported stage to the matching column, and io.kestra.plugin.trello.cards.Move drags the release card there. Discord gets a one-line note, so the channel sees the board change the moment the pipeline does.

How it works

  1. The ci_webhook trigger (io.kestra.plugin.core.trigger.Webhook) accepts a JSON POST from the deploy pipeline with two fields, stage and cardId. Replace the placeholder key with a strong random value.
  2. route_stage (io.kestra.plugin.core.flow.If) evaluates {{ (trigger.body.stage ?? 'staging') == 'production' }}, so an omitted stage safely defaults to the staging branch.
  3. The matching branch runs io.kestra.plugin.trello.cards.Move with the card id from the payload, falling back to the release_card_id input when CI does not send one, and pos: top so the freshest release leads the column.
  4. notify posts the card id and stage to Discord.
  5. The errors block posts a distinct Discord alert when the move fails, covering the worst failure mode, a deploy that happened while the board still shows the old state.

What you get

  • A release board that reflects reality without anyone dragging cards.
  • Stage routing with a safe default, so partial payloads degrade instead of failing.
  • A card id fallback input, useful while wiring up the CI side.
  • A failure alert for the deploy-succeeded-board-stale case.

Who it's for

  • Teams tracking releases on a Trello board next to a CI/CD pipeline.
  • Release managers tired of asking whether the card or the pipeline is right.
  • Platform teams adding lightweight deploy visibility without a dedicated release tool.

Why orchestrate this with Kestra

CI knows the deploy finished and Trello holds the board, but neither speaks to the other. Kestra sits between them with a webhook endpoint, conditional routing, secret management for the Trello credentials, and an execution history that records every board move next to the payload that caused it.

Prerequisites

  • A Trello board with columns for staging and production, and both list ids.
  • A Trello API key and token from https://trello.com/power-ups/admin.
  • A CI pipeline able to POST JSON to a URL after deploys.
  • A Discord incoming webhook for notes and failure alerts.

Secrets

  • TRELLO_API_KEY: Trello API key.
  • TRELLO_API_TOKEN: Trello API token.
  • DISCORD_WEBHOOK_URL: Discord incoming webhook URL.

Quick start

  1. Add the three secrets to your Kestra namespace and fill in the two list id inputs.
  2. Replace the webhook key with a strong random value.
  3. POST a body like a JSON object with stage set to production and a real cardId, then watch the card jump columns and the Discord note arrive.
  4. Add the webhook call as the last step of your deploy job.

How to extend

  • Add more stages by nesting further If branches, each targeting another list id input.
  • Stamp the deploy on the card with io.kestra.plugin.trello.cards.Comment, recording the pipeline run URL from the payload.
  • Archive the card after a production deploy with io.kestra.plugin.trello.cards.Update and closed: true for boards that retire released cards.
  • Send the note to Slack instead by swapping the notification task.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.