Reputation: 316
I'm trying to understand why so many people have taken the route of setting up "Docker cloud agent" (tutorial1, tutorial2) inside Manage Jenkins -> Clouds, instead of just going with "Docker agent" inside pipeline, which is officially supported (official documentation).
In my view, if I go with "Docker cloud agent" way,
UPDATE:
Instead of all these extra steps, if I go with "Docker agent" support inside pipeline directly (official documentation),
What is the exact reason for choosing OR when should I choose "Docker cloud agent"?
And where is the official documentation to expose Jenkins REST API port like this?
Thank you.
Upvotes: 1
Views: 464
Reputation: 2550
I don't know if I can give a comprehensive answer to this question, but there is one aspect that comes to mind - jobs isolation. When you are using docker-plugin (that provides Docker cloud) Jenkins creates a new agent for each job run. When you are using docker
symbol in agent
at the stage
level you are reusing pipeline level agents, and when you are doing it at the pipeline
level your containers are running on the controller, which is not scalable.
Generally speaking, single use agents are more deterministic and secure, so you will end up using them, and docker-cloud is probably the easiest way to do it. Not the best way for sure, as @alexander-pletnev mentioned k8s is probably more flexible.
Upvotes: 1