Skip to content

Commit 2da54eb

Browse files
authored
Merge pull request #10553 from harness/PIPE-26236
[PIPE-26236] Feature: Project-Level Pipeline Execution Concurrency
2 parents 8c285c6 + 463b40e commit 2da54eb

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

docs/platform/pipelines/pipeline-settings.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,60 @@ These concurrency limits are *account wide* and NOT per pipeline.
8989

9090
This setting can only be edited in Team and Enterprise plans. You can set it at the account scope only. You can configure the limit anywhere between 2 and the maximum.
9191

92+
### Project-Level Pipeline Execution Concurrency
93+
94+
:::note
95+
Currently, this feature is behind the feature flag `PIPE_PROJECT_LEVEL_EXECUTION_CONCURRENCY`. Contact [Harness Support](mailto:[email protected]) to enable the feature.
96+
:::
97+
98+
You can take fine-grained control of how many pipelines run concurrently in each of your projects. By splitting your account-wide concurrency limit into a **High-Priority** and **Low-Priority** partition, you guarantee reserved execution slots for critical projects while preventing any one project from consuming all available capacity.
99+
100+
You can configure this at the account scope only. Navigate to **Account Settings** -> **General** -> **Default Settings** -> **Pipeline** -> **CONCURRENCY MANAGEMENT**.
101+
102+
#### How to Configure
103+
104+
1. **Concurrent Active Pipeline Executions**
105+
- Enter your account’s **total** concurrency limit (by default, it is `1000`).
106+
- Click **Restore to Default** to reset to the system default.
107+
108+
2. **Pipeline Execution Priority**
109+
- Select the partition you’re defining: **High** or **Low**.
110+
- Click **Restore to Default** to revert.
111+
112+
3. **Concurrency Limit**
113+
- Specify how many slots to reserve for the selected partition (must be less than your total).
114+
- Example: setting `200` reserves 200 slots for High (leaving 800 for Low).
115+
116+
4. **Prioritised Projects**
117+
- Select one or more projects to belong to this partition.
118+
- All unselected projects automatically fall into the opposite partition.
119+
120+
<div align="center">
121+
<DocImage path={require('./static/project-concurrency.png')} width="100%" height="100%" title="Click to view full size image" />
122+
</div>
123+
124+
#### How It Works
125+
126+
**Partition Approaches**
127+
You have two options for carving up your total concurrency:
128+
129+
1. **High-Priority Partition (Whitelist)**
130+
- You define a **High** slot count and explicitly specify which projects belong there.
131+
- All remaining (and any newly created) projects automatically fall into Low-Priority.
132+
- **When to use**: reserve slots for a handful of critical projects (e.g. security fixes, patch releases), so they always start quickly.
133+
134+
2. **Low-Priority Partition (Blacklist)**
135+
- You define a **Low** slot count and explicitly specify which projects belong there.
136+
- All remaining (and any newly created) projects automatically fall into High-Priority.
137+
- **When to use**: throttle noisy or build-heavy projects (e.g. CI pipelines) to free up capacity for everything else.
138+
139+
- **Runtime behavior**
140+
1. When both **High** (200) and **Low** (800) are full, new **High** executions queue—but start immediately as soon as **either** partition frees a slot (allowing High to spill over up to the full 1000 over time).
141+
2. New **Low** executions consume only the Low partition; if those 800 are full, they queue until a Low slot opens.
142+
3. On dequeuing mixed queues:
143+
- **High** pipelines start on the first available slot in **High** or **Low**.
144+
- **Low** pipelines wait for the next available **Low** slot.
145+
92146
### Pipeline Timeout and Stage Timeout (execution time limits)
93147

94148
The timeout limit is the maximum allowable time a stage or pipeline can run.
89.4 KB
Loading

0 commit comments

Comments
 (0)