Or use a CI/CD tool that natively supports Docker, like Concourse.
Added bonus is that pipelines are defined in YAML rather than web GUI so you can version control the pipelines themselves and not just any build or test suites.
> Jenkins pipelines are written in Groovy and you do not need to use the web ui, everything is exposed via its API (i.e: new job creation).
There's several ways you can codify Jenkins pipelines, Groovy being just one of them. But ultimately it's secondary to the main design of Jenkins. I'm not taking anything away from Jenkins as a solution - it has been invaluable over the years. But the way we write, test and deploy software has changed since Jenkins rose in popularity and as such we need to rely on different workflows that utilise different tooling. While Jenkins can be used in that way, I'd sooner use something which was primarily designed to be configured via code and used docker by default rather than something that requires enforcement to follow those best practices. That doesn't necessarily mean Concourse, there's Travis, Circle CI, AWS CodeBuild and a bunch of others that all default to that kind of workflow too, but it does mean I'm unlikely to ever advocate Jenkins again in future jobs.
While you’re not wrong I do use jenkins inside docker and use ansible to configure it, it is a bit different than other more modern tools but works fine.
I have yet to see other tools be as flexible (perforce , git, legacy tools, docker, 100s of workers across datacenters etc.)
I’m yet to see a CI/CD tool that can’t do all of that. What you’re describing there is the bare minimum I’d expect any CI/CD solution to do. I guess there might be some hobby platforms for indie devs but they’re not really the use case we are discussing when talking about Jenkins and Concourse.
I've bounced off concourse several times now. The promise is great, but the setup is absurdly complex and at the end I'm stuck with CI in Docker containers (I usually want 1 or more VMs)
Concourse can run as many VMs as you want. The point is those jobs get pushed to a farm of workers (typically VMs) and then docker is used so you have an ephemeral and repeatable build environment. It is absurdly complex to set up though. I feel there is a gap in the market for a Concourse-like solution but simplified immensely.
Added bonus is that pipelines are defined in YAML rather than web GUI so you can version control the pipelines themselves and not just any build or test suites.