I have 2 questions related to tasks running parallel in Octopus
We control the number of tasks that can execute in Octopus using below variables. Octopus.Acquire.MaxParallelism Octopus.Action.MaxParallelism OctopusBypassDeploymentMutex
1#) Now we have to create these variables per project.
Is there anyway to configure these variables in a common place so that we do not need to define these variables within every project.
2#) Lets say I have multiple spaces (Space-1, Space-2 etc)
And I have these configurations in place
±—Spaces-1
---------- Project 1
------------- Octopus.Action.MaxParallelism = 10
To answer your first question, you could create a library variable set that houses the variables you want applied to your projects, then import that library variable set to those projects. There is some documentation on that here: https://octopus.com/docs/projects/variables/library-variable-sets
I have tested this with Octopus.Action.MaxParallelism and it works as expected.
To answer your second question, if you have different values in separate spaces, you will get the correctly assigned value of tentacles running the project at any given time. So in your example, Space 1 would run Project 1 on 10 tentacles at once, and Project 2 running at the same time in Space 2 would only run on 1 tentacle at once.
Please let me know if that works for you or if you have further questions.
And below variables are just to configure how many tasks in the existing project to run in parallel and not a cap for the total number of tasks in a Space or project group in parallel. Is my understanding right? Octopus.Acquire.MaxParallelism Octopus.Action.MaxParallelism
The way library variable sets work is they act as project variables, but project variables take precedence if the variable name already exists within the project. For example, if you have Octopus.Action.MaxParallelism as a project variable set to 10, and as a library variable included in that project set to 20, the value will be read as 10 (the project’s variable).
I have tested OctopusBypassDeploymentMutex being brought in from a library variable set and it allowed me to run 2 separate deployments on the same target simultaneously.
In regards to your questions on Octopus.Acquire.MaxParallelism and Octopus.Action.MaxParallelism, these are used to determine how many tentacles you want to be able to acquire packages or take the same step at any given time. This is scoped to that specific project. So if you have 10 tentacles and you set it to 2, it will take 5 iterations for all tentacles to complete the step/acquire the package. If you have 10 tentacles and set it to 10, all tentacles will work at the same time.
Please let me know if that makes sense or if you have any other questions.