We are a .net shop. Our Jenkins environment has a master on Windows, one Windows slave server and one Linux slave server. Each slave server has many slaves (they are actually just multiple Jenkins slaves running on the same server) named after the line of business, and projects belong to that line of business are running on that particular slave.
For those slaves run on a special account, I understand it's necessary to have their own slave, but for those doesn't, I don't understand why separate them into different slaves and restrict projects to run only on these slaves. My concerns are:
- Some line of business has a lot more projects than the others and could cause longer wait time.
- If the slave is down, then all projects in this line of business can't run, will cause unnecessary downtime.
I am thinking about these rules for a separate slave:
- Need different OS/software,etc., builds can't be run on the same build server, require a separate server with a new slave on it.
- Need different account to run the build, require a separate slave to run on this account, can use the same slave server though.
- Create more public slaves, all projects have no special requirement can use any of them.
- Configure each slave to have multiple executors based on number of projects.
What do you think?