Managing Users / Teams / Projects

Suppose I have a large number of developers and techs that all use a single Octopus server. The techs need to install to multiple client environments, and the developers need to install to individual machines and a few dev environments.

My question is how best to organize this? There’s a couple issues I’m running into:

  1. If each developer should have admin rights to anything related to their own machine, but ONLY to their own machine, do I have to have a team for EACH developer, with that team consisting of only one person? Is there a better way to assign roles to individual users?

  2. Should I create a separate project for each environment? They all use the same packages and code, but I don’t want to have a million variables in one project. Plus, since I want each person to have admin rights on the project, can I limit their ability to edit variables scoped to other environments? If I have separate projects, and I change something in a project, I’d then have to change it for every one.

2 is my main concern. If a deployment requires 10 variables, and I have 20 developers, then I would need to have that project use 200 variables in it. And I don’t know that I could even stop them from changing variables for other developer’s environments. But I also don’t want to have a project for each environment, as that defeats the purpose of Octopus being able to re-use projects. Any thoughts?

Hi,

I can only answer somewhat obliquely I’m afraid - still a lot of context to gain.

First, if possible I think a single Dev environment will be more sane; developers can choose “specific machines” when deploying to it, and perhaps you could have a script step fail the deployment if a machine isn’t explicitly chosen?

RE multiple clients, do releases go out in unison to all clients? If so, using roles and role-scoped variables may be the best option today.

If not, using multiple projects will soon be the best option, with some API-based tools to sync changes between them. Octopus 2.4 will add more inter-project sharing abilities to ease up this usage, and I can only see it getting smoother over time.

HTH, let me know your impressions.

Cheers,
Nick

I think I’ve gotten it down pretty clean. I have each developer assigned to their own environment. While that’s messy, I can have a single project, and they all have to assign their own scoped variables to it. I think between that and the 2.4 feature of shared steps between projects (so updating one will update all of them) I should be good.

Thanks nick!