Configure tasks to run in parallel within Octopus

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

±—Spaces-2
---------- Project 2
------------- Octopus.Action.MaxParallelism = 1

Can I run 10 tasks in parallel in Spaces-1 if both Spaces-1->Project1 and Spaces-2 -> Project-2 are running parallel

Hi @Falcon_Francis,

Thanks for reaching out.

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.

Thanks,
Jeremy

Hi @jeremy.miller
We have to set OctopusBypassDeploymentMutex in project variables as per https://octopus.com/docs/administration/managing-infrastructure/run-multiple-processes-on-a-tentacle-simultaneously
So I am not sure we can move even this variable also to library set.

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

Hi @Falcon_Francis,

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.

Thanks,
Jeremy

1 Like

Thank you @jeremy.miller for the information.

Its clear now.

1 Like

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.