Run Jenkins jobs as steps in a bigger flow.

Jenkins runs your CI in isolation. Kestra runs Jenkins jobs as steps alongside Terraform, Ansible, and Argo CD, adds approval gates between stages, triggers from any event, and gives you one execution history across every tool in the stack.

Blueprints for Jenkins orchestration.

Jenkins is the CI workhorse most enterprises still run. Kestra sits above it instead of replacing it. It triggers Jenkins jobs from webhooks, schedules, or any HTTP signal; chains them with Terraform, Ansible, and Argo CD in one flow; adds Pause-with-notification gates between stages that Jenkins input{} cannot match; and gives you one execution view across every tool.

Trigger a Jenkins job from a webhook and poll until terminal Open blueprint
Pause between Jenkins build and deploy, with Teams approval Open blueprint
Provision with Terraform, configure with Ansible, test with Jenkins Open blueprint

Above the Jenkins build queue.

Jenkins solves the build, the agent, and the workspace. Kestra solves the steps that have to run around the job: what triggers it, what runs alongside it, who approves what comes next, and where the audit trail lives.

Jenkins jobs as steps in a bigger flow

Jenkins runs your build in isolation. It has no native way to chain with the Terraform that provisioned the agent, the Ansible that configured the host, or the Argo CD that ships the result. Kestra runs all four as tasks in one flow. io.kestra.plugin.jenkins.JobBuild enqueues the Jenkins job; the next task only runs after io.kestra.plugin.jenkins.JobInfo confirms success. Outputs flow forward and the whole chain shares one execution ID.

Declarative YAML, not Groovy

A Jenkinsfile is Groovy DSL plus shell. Every pipeline change needs someone fluent in both. Kestra flows are plain YAML with typed inputs, a documented schema, and the same syntax across every namespace. The contributor doesn't have to learn Groovy to add a stage, swap a runner, or wire a notification.

Native pause and resume with notifications

Jenkins input{} stops the build mid-pipeline and waits for a click in the Jenkins UI. There's no first-class notification, no reviewer attribution, no timeout that doesn't fail the build. Kestra's Pause task suspends the flow, fires a notification (Slack, Teams, PagerDuty, Email) right before pausing, logs the reviewer's identity and timestamp on resume, and survives operator-set timeouts cleanly.

Event-driven triggers beyond GitHub

Jenkins ships with a cron timer and a GitHub webhook plugin. Anything else (Kafka, S3, a Snowflake task, a ServiceNow change, a custom HTTP source) needs a hand-rolled connector. Kestra has 50+ native triggers: Git, S3, Kafka, webhooks, schedules, file arrival, database changes. The Jenkins job fires on the event that actually matters to the business.

Run history that spans tools, not just Jenkins

Jenkins's build history shows builds. It has no record of the Terraform run that created the AWS resources, the Ansible playbook that configured them, or the Argo CD sync that deployed the result. Kestra logs every step across every tool with a trigger source, a timestamp, retry counts, and a direct link to the failing task. One place to debug the full pipeline.

Self-service via Kestra Apps

Jenkins parameterized builds give a small form on the build page. They don't give QA a button to fire a smoke test, or release managers a typed form to promote a tag with the approver logged. Kestra Apps wraps any flow in a typed form. Non-engineers fire the Jenkins job they need without touching Jenkins or YAML, and every trigger lands in execution history with the user's identity.

How teams use Jenkins and Kestra

Patterns platform and DevOps teams run in production today. Each one shows the flow end to end, with the real plugin classes in play.

Event-driven

Trigger Jenkins jobs from any event, not just cron

A webhook (or S3 file arrival, or Kafka message, or schedule) fires the flow. Kestra calls JobBuild with parameters from the trigger body, polls JobInfo until the build reaches a terminal status, and branches on the result. The Jenkins job runs on the event that matters, not on the next cron tick.

Parameters from trigger body

JobBuild.parameters reads trigger.body at run time.

Polling without manual scripts

JobInfo handles the status check loop; no custom shell.

Branch on Jenkins result

An If task routes success and failure to different downstream paths.

webhook
any HTTP signal
JobBuild
enqueue with params
JobInfo
poll until terminal
branch
on result
notify
Slack on outcome
Cross-stack

Chain Jenkins with Terraform, Ansible, and Argo CD

Terraform provisions the AWS resources, Ansible configures the hosts, Jenkins runs the test suite via JobBuild, and Argo CD syncs the deploy. All four run as sequential tasks in one Kestra flow with outputs flowing forward.

One execution ID across all four tools

Terraform run ID, Ansible recap, Jenkins build number, Argo CD sync ID all in one view.

Step retries do not cascade

An Ansible retry never re-runs Terraform; a Jenkins retry never re-runs Ansible.

Outputs flow forward between steps

outputs.terraform.outputs feeds the Ansible inventory; Jenkins parameters read it.

Terraform
provision
Ansible
configure
Jenkins
test
Argo CD
sync
notify
Slack on done
Governance

Approval gate between Jenkins build and Jenkins deploy

JobBuild fires the build job and JobInfo confirms success. Kestra posts the build number and artifact link to Microsoft Teams as an Adaptive Card, then pauses. A named reviewer approves in the Kestra UI; only then does the deploy JobBuild fire. Reviewer identity and timestamp are logged automatically.

Notification before the Pause

Reviewers are paged the moment the build finishes; the Pause is not a silent wait.

Reviewer + timestamp logged

Identity and approval moment stored in execution history automatically.

Two job names, one flow

Build and deploy job paths are typed inputs; one flow drives both stages.

First-class audit trail

Every production deploy is linked to a reviewer, a build number, and a moment in time.

build job
JobBuild
teams
approval needed
pause / review
human approves
deploy job
JobBuild
slack
audit log
Parallel

Run multiple Jenkins jobs in parallel with per-job isolation

A release fires twelve Jenkins jobs across regions or services. Kestra fans them out via ForEach with concurrencyLimit, calls JobBuild per job, and isolates failures with allowFailure. A targeted Slack alert pages the owner of the failing job.

Bounded parallelism

concurrencyLimit caps how many jobs hit the Jenkins controller at once.

Per-job failure isolation

allowFailure on the inner task keeps one bad job from halting the wave.

Owner-aware alerts

Slack channels routed by job name; the right team gets paged for the right failure.

trigger
release event
ForEach jobs
fan out
JobBuild
per job, parallel
JobInfo
per-job status
slack
owner ping
Migration

Modernize Jenkins incrementally, both run side-by-side

Legacy Jenkins jobs keep running through JobBuild while new logic moves into Kestra flows. The Kestra flow becomes the orchestration layer: it calls the Jenkins jobs that are still useful, runs the new Kestra-native steps directly, and presents one execution history. No big-bang rewrite, no parallel-team coordination tax.

No big-bang rewrite

Migrate one job at a time; the rest keep firing from Kestra.

One execution view during the transition

Jenkins runs and Kestra-native steps share one execution ID and one history.

Decommission Jenkins gradually

Retire a Jenkins job by deleting its JobBuild task once the Kestra step is proven.

trigger
webhook or schedule
legacy Jenkins
JobBuild
Kestra-native step
new logic
branch
result handling
slack
summary
Kestra allowed us to move from fragmented automation to a unified control plane: secure, scalable, and manageable by all our teams.
Julien Legrand, PO Data at Crédit Agricole (CAGIP)
7Data Teams Unified
100+Managed Clusters

Kestra vs the orchestration alternatives Jenkins teams evaluate

Capability
Prefect
Airflow
GitHub Actions
Pipeline definition language
Declarative YAML
PythonPython DAGsYAML
Trigger Jenkins jobs natively
JobBuild + JobInfo plugin
HTTP requests in PythonOperator chainHTTP request action
Pause + resume between stages
Native, with reviewer logged
Available in Prefect 2.x+Custom sensor workaroundEnvironment approvals (deploy only)
Event triggers beyond cron and GitHub
Webhook, S3, Kafka, file, DB
Possible, Python code requiredSensor-based pollingCron or Git events only
Chain Jenkins with Terraform, Ansible, Argo CD
Native plugins for each
Python operators requiredOperator chainStep ordering, glue scripts
Self-service forms for non-engineers
Kestra Apps
No native form layerNoNo
Secrets via secret() with backends
Native (Vault, Cloud Secret Manager)
Secrets blocksVariables + ConnectionsRepo + org secrets

Jenkins & Kestra: common questions

Find answers to your questions right here, and don't hesitate to Contact Us if you couldn't find what you're looking for.

See How

Ready to orchestrate Jenkins as part of a bigger flow?

Trigger Jenkins jobs from any event, chain them with Terraform, Ansible, and Argo CD, add Pause-with-notification gates between stages, and trace every step from one place. Open source, self-hosted, event-driven.