Self-hosted service
jenkinsci/docker-workflow-plugin avatar
jenkinsci/docker-workflow-plugin

docker-workflow gives Jenkins Pipeline a way to build and use images

Jenkins plugin which allows building, testing, and using Docker images from Jenkins Pipeline projects.

526 stars421 forksJavaMIT

At a glance

What is it?
The Jenkins Docker Pipeline plugin lets a Pipeline job build, test and consume Docker images without leaving the Jenkins script, and it is published on the Jenkins plugin site under the name docker-workflow. The README is thin by design, with the real documentation in docs/docker-workflow.md, and the bundled Docker demo is explicitly described as outdated.
Who is it for?
Adopt docker-workflow if your organisation already standardises on Jenkins Pipeline and wants image builds to live in the same job as the tests that validate them. Skip it if you are still on freestyle jobs, since the plugin is scoped to Pipeline projects, and skip it if you want a maintained demo to copy from.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 22 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the plugin covers, and where the documentation actually is

The plugin's own description is narrow and worth quoting in full because it defines the scope. It is a Jenkins plugin which allows building, testing, and using Docker images from Jenkins Pipeline projects. Three verbs, one integration point. The README then says a full description is available in the plugin's documentation, docs/docker-workflow.md, which tells you two things about the project. The first is that the README is a signpost rather than a manual, and the second is that the substantive documentation is kept in the repository as a Markdown file next to the source, which is the normal arrangement for a Jenkins plugin and means the docs travel with the code rather than on a separate site. The homepage is the Jenkins plugin site entry for docker-workflow, and the repository also carries a Jenkinsfile of its own, which is the conventional way for a plugin to run its own build, tests and checks on a Jenkins instance.

Why the plugin exists rather than a shell step

The interesting design question is why this is a plugin at all, since a Pipeline job can run any command on the agent including docker. Two reasons follow from what the plugin does. The first is that it is a Jenkins plugin, so it can be installed from the plugin site and updated through the standard Jenkins update centre mechanism, and it can be configured through the familiar Jenkins configuration screens, and it can report status into the build rather than leaving the operator to read log output. The second is that the plugin can talk to the Docker daemon directly through the Java API rather than shelling out, which means the steps appear as first-class Pipeline steps with their own parameters and their own logging. For a team that has been fighting with shell quoting, exit codes and environment variable handling in a docker build step inside a declarative Pipeline, that difference is the entire value. The topics listed for the repository make the intent plain: docker, jenkins-pipeline and jenkins-plugin, plus adopt-this-plugin, the marker that puts the Adopt this plugin button on the plugin site for organisations that want to pre-approve the plugin internally.

Releases, version numbering and the changelog split

The release list shows the plugin's recent cadence. The newest listed release is 653.v2f2c08eff0ec from 2026-08-13, preceded by 647.vf474049b_b_303 on 2026-07-28 and 634.vedc7242b_eda_7 from 2025-10-13. The version strings follow the Jenkins plugin convention of an incrementing number followed by a build identifier, and the gap between 634 in October 2025 and 647 in July 2026 is worth noting because it suggests a release rhythm of roughly monthly rather than weekly. The last push to the repository was on 2026-10-01, so work is continuing after that release. The changelog itself is split in two, which is a small but useful signal about how the project is maintained. For new versions the README points to GitHub Releases, and for versions 1.19 and older it points to the plugin's Wiki page, because the project moved its changelog from the wiki to GitHub releases at some point after 1.19. If you are upgrading from a long-lived installation, the wiki page is where your old changelog lives.

The demo, and the honest warning about it

The README includes a demo section, and the wording is unusual for a project README. It says the plugin has an outdated Docker-based demo, and directs the reader to the demo README from v1.12 in the docker-workflow-1.12 branch of the repository for setup and launch guidelines. In other words, the maintainers are telling you that the demo in the current tree is stale and that the last version with usable instructions is 1.12, which is far behind the 653-series releases in the list. That is more useful than it first appears. A demo that quietly stops working sends people hunting through issues; a demo that is explicitly labelled outdated with a pointer to a known-good branch saves that time. The reason a Docker-based demo ages badly is that it depends on a Docker daemon, a compose file or similar and on the host environment, and the plugin's own CI has moved on considerably since version 1.12.

Licence, packaging and what the repository contains

The licence is the MIT License, linked from the README, with the text in a LICENSE.txt file at the repository root, which is the standard permissive grant most Jenkins plugins use and one that suits corporate environments. The repository layout is small and conventional: a src directory for the Java code, a pom.xml for the Maven build, a Jenkinsfile for the plugin's own pipeline build, a docs directory holding the docker-workflow.md documentation, a .mvn directory for the Maven wrapper configuration, and the usual .github and .editorconfig files. The primary language is Java, and the plugin is distributed through the Jenkins update centre, which is what the badge for plugin installs points at. Everything needed to build the plugin from source is in the repository, so an organisation with a policy of building plugins internally rather than pulling them from the update centre has a path.

Where docker-workflow is the wrong choice

Three limits, and they come from the scope rather than from any defect. The first is that it only applies to Pipeline projects. If part of your build estate is still on freestyle jobs, this plugin does nothing for that part, and the alternative for a freestyle job is the older Docker plugin family or a shell step, so a mixed estate ends up with two ways of building images. The second is that the plugin assumes a Docker daemon is reachable from the Jenkins agent. In a containerised or rootless setup, or on an agent that itself runs inside a container, getting the daemon socket and the credentials right is where the effort goes, and the README says nothing about it because the documentation is elsewhere. The third is documentation depth. The README is a signpost, the full description lives in a single Markdown file, and the demo is old. That combination is workable for an experienced Jenkins engineer who will read the docs file and search the issue tracker, and thin for a team expecting a wiki, a troubleshooting guide and a maintained example. That is a documentation cost, and for a plugin whose whole purpose is to sit in the middle of your build pipeline, it is the cost to weigh.

Editorial conclusion

Adopt docker-workflow if your organisation already standardises on Jenkins Pipeline and wants image builds to live in the same job as the tests that validate them. Skip it if you are still on freestyle jobs, since the plugin is scoped to Pipeline projects, and skip it if you want a maintained demo to copy from. Before you build a pipeline around it, read docs/docker-workflow.md, which the README points to as the full description, and check the plugin's release notes on GitHub for the behaviour of the version you install.

Frequently asked questions

What does the Jenkins docker-workflow plugin do?

It allows building, testing and using Docker images from Jenkins Pipeline projects. The plugin is published on the Jenkins plugin site as docker-workflow, and the full description is in the plugin's documentation file docs/docker-workflow.md in the repository.

Where can I find the docker-workflow plugin documentation?

The README says a full description is available in the plugin's documentation, docs/docker-workflow.md, which is kept in the repository alongside the source. The plugin homepage is the Jenkins plugin site entry at plugins.jenkins.io/docker-workflow.

Is there a working demo for the docker-workflow plugin?

The README says the plugin has an outdated Docker-based demo and points to the demo README from v1.12 in the docker-workflow-1.12 branch for setup and launch guidelines.

Where do I find the changelog for recent docker-workflow versions?

For new versions the README points to GitHub Releases, and for versions 1.19 and older it points to the plugin's Wiki page. The listed releases include 653.v2f2c08eff0ec from 2026-08-13 and 647.vf474049b_b_303 from 2026-07-28.

Official sources

  1. jenkinsci/docker-workflow-plugin on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jenkinsci-docker-workflow-plugin.svg)](https://hysenlabs.com/projects/jenkinsci-docker-workflow-plugin)

Was this useful?