Skip to end of metadata
Go to start of metadata

Plugin Information

View Throttle Concurrent Builds on the plugin site for more information.

This plugin is up for adoption. Want to help improve this plugin? Click here to learn more!

This plugin allows for throttling the number of concurrent builds of a project running per node or globally.

Documentation

See the plugin page on GitHub

Source

The source for this plugin is in GitHub, at https://github.com/jenkinsci/throttle-concurrent-builds-plugin

Versions

See the CHANGELOG page on GitHub.

37 Comments

  1. I am not really sure how you throttle the builds and what the effects are. Also a few screen shots of the config screens would be nice.

    So in short, can you improve the documentation so someone is able to decide if this plugin fits their usecase? It is important for me, since I don't have a test Hudson server to test out new plugins, I have to do all on my "prod" Hudson server. And there I don't want to install too many plugins, just to test them.

  2. Unknown User (hudson@pasam.com)

    1.3 seems to be broken in some cases. I got the latest source from git and it also has the same problem. Building more jobs than specified. I looked at the source and I think all "else if" should be converted to "if" in ThrottleQueueTaskDispatcher.java.

    Do you mind making these changes and releasing 1.4 version of this plugin? Thanks

  3. I'm interested in using this, but I can't tell when the throttle is released.  Is it before or after the post-build steps are executed?  What I need is the ability to retain a lock until all post-build steps are completed in some cases, otherwise a lock is released too soon.

    Thanks in advance,

    Dan

  4. The source code (GitHub) link is incorrect - the correct link is:  https://github.com/jenkinsci/throttle-concurrent-builds-plugin

    -Kevin

  5. Does anyone know how can i throttle matrix child jobs? as i understand this plugin throttle matrix in parent level.

    is it going to support both levels at some point? This will really help us, since i have matrix with 34 configurations and i would like to be able to set a limit on how much children can run in parallel

    thanks

    1. hi lena

      did you get solution for the same ??

      i am looking for something similar  !

    2. hi lena

      did you get any solution ?

      i am looking for something similar !

  6. Ignore this, sorry, got posted twice.

  7. Hi, there's not much usage information in this page, so I'm not sure if this is feasible.

    Can anyone tell me if it's possible to throttle a build based on 2 resources (categories)? I have a build pipeline, and want a step (job) to run after some other jobs have finished in parallel.

    For example job1 -> job2a, job2b, and job2c (in parallel) -> (only after _all_ job2X jobs finish) job3. If I set job2a, job2b, and job2c to trigger job3, with 'block when upstream/downstream project is building'. On the pipeline view, I see job3 three times (after each job2X job, however, it's only triggered once).

    Can I have a category 'job2a' used by job2a, and throttled by job3, and a category 'job2b' again throttling job3, with job3  triggered by job2c? I want job3 to run only after the slowest job2X job has finished.

    Thanks - Graham

  8. Hello,

    I love this plugin. However, I have the need to run a job only when a node is completely idle but it doesn't matter if jobs are building on other nodes so the max total concurrent buidls can be unlimited. and I don't want to use the category option because that would require me to create WAY TOO MANY CATEGORIES because of the sheer number of jobs we have. So, I am trying touse the Per Single Job option and I have the job set to 

    - Throttle this project alone

    - Max total concurrent builds = 0

    - Max concurrent builds per node = 1

    However, when I kick off this job on Node A and Node A has 3 executors - 2 of which are building somethign, the job does not wait for the node to be idle. Is there somethign I am doing wrong?

    Thanks in advance. We are at Jenkins 1.478 and we have the latest version of this plugin.
    -Jill

  9. Feature request:  option to throttle builds based on parameters of the build. If a parameterized build with the same parameters as another build enters the queue, set a concurrency limit on that build.

    1. +1 from me. I also would like to throttle a Job based on its parameters, that is, only run it in parallel when the parameters differ (or to be exact, when a specific parameter differs, no matter what the values of possible other parameters)

    2. +1 This helps for a broad subclass of builds that are not completely safe for concurrency, but are fine with distinct parameters.

    3. +100 here.

      Even if for starters it can be based on parent job ... so if ParentJob1 -> ChildJob, ParentJob2 -> ChildJob , ParentJob3 -> ChildJob ... I might not care how many ParentJobs are running, but ChildJob can only run 1 at a time based on which parent is calling.

  10. Is there any way to set the maximum concurrent builds per node individually for different nodes? Such a feature would help us a lot.

    Scenario: We perform tests with Jenkins that require a CUDA device. Some node have a single and some have two CUDA devices.

    1. As far as I can tell, the throttle category is a project thing, not a node thing.

      The problem would appear to be that you have multiple executors per node that "starve" the node of certain specific resources. (CUDA devices in this case.)

      AFAIK, Jenkins has no way at all to customize anything about an individual executor. Sometimes running multiple Slaves on a single machine is a workaround.

      What might work: On the machines that have CUDA devices, add a separate Slave that only runs CUDA related stuff (via label). This slave then has as many executors as there are CUDA devices on the machine, essentially providing the throttling per Slave via its executors.

  11. Is there any way to set the category group through parameter injection? I would like to be able to conditionally select whether a build should join the throttled category or not.

    Use case:

    Job A compiles and triggers job B + pipeline

    Job B deploys to different servers (used by pipeline and users)

    Job C and D do smoke tests towards specific server

    I want to be able to trigger as many Job B as possible if and only if they are not part of the pipeline (category).

  12. Just installed this in an attempt to resolve an issue where 2 jobs are stepping on each other.

    However, I am not seeing the Category Name field when attempting to configure these 2 jobs.

    Am I missing something here?

    Using current version of FireFox with Jenkins 1.580.

  13. The flyweight executor of a matrix build seems to be counted, which sounds wrong to me...

    I have a type of job where only one configuration can be built on a machine at a time. A matrix job got started on the only slave that can build this type of project, and everything was deadlocked. They were waiting for an available executor, even though that slave had 4/4 idle executors, but a matrix flyweight executor as well.

    Not sure if this should be the default or not, but we must be able to ignore those parent executors from the count.

    1. I feel stupid now and I can't delete my comment. There is a "Throttle Matrix master builds" checkbox in the job's configuration, which I probably need to uncheck. I was looking at the global configuration...

  14. I have a job chain and 2 Slaves.

    Jenkins Master Job

    ->

    Jenkins Slave Job

    ->

    Jenkins Slave Job

    TestStarter with Parameter Current_Variant=Variant1 running on master

    ->

    FlashEcu with Parameter Current_Variant=Variant1 running on slave1

    ->

    TestEcu with Parameter Current_Variant=Variant1 running on slave1

    TestStarter with Parameter Current_Variant=Variant4 running on master

    ->

    FlashEcu with Parameter Current_Variant=Variant4 running on slave2

    ->

    TestEcu with Parameter Current_Variant=Variant4 running on slave2

    That seems not working , the problem seems blocking the downstream jobs ( Optiion "Block build when downstream project is building" under "Advanced") work per job  not per job and node.

    Is that correct and does someone knows a solution or an alternative?

    Does it work for matrix builds?

    Thanks in Advance.

    Regards

    Ingo

  15. Possible to get more info on "Support throttling based on parameter value examination" ??
    That is one nasty PR, trying to decipher it is not easy.

  16. Using the new support for throttling based on parameter values, would it be possible to handle the following:

    Have Task Parameters called "Test Machine", have Fixed Categories called "Database Test" and "Printer Test".

    Then set throttling up so that each Test Machine is only allowed to handle 4 tasks at a time, but also limit each test machine to only run a single Database and a single Printer test at a time?

    Currently my setup is based solely around fixed Categories, but this doesn't allow running a suite in parallel against two test Machines with different versions (instead the machines are tested in serial which is an issue with the full suite taking 8+ hours).  

  17. I am not sure I understand this plugin. If I have 5 jobs and 2 executors, will I be able to categorize the ones I want to allow to run in parallel?

    I want to prevent Jobs 1-4 from running in parallel but job 5 can run in parallel with any of them.

  18. Feature request:  option to set variable ( parameterized ) for the number of maximum total concurrent build / the number of maximum concurrent builds per node .

    Ex: JOB A can send the param to JOB B for set the the number of maximum total concurrent build / the number of maximum concurrent builds per node on JOB B. 

    ( Simulate to the dynamically choose the number of the concurrent builds )

  19. Are you sure the "

  20. Can the count of current jobs in a given category be queried in any way?

  21. I have several types of jobs(for example 3) and have to run one type of jobs exclusively on the host. Two other types of jobs could be started on the same host concurrently. Details are following: Jobs of type 1 could be started in any quantity per host(for example 3 jobs per host). Jobs of type 2 could be started only one job per host. Jobs of 1 and 2 types could be started concurrently on the same host. Jobs of 1 and 2 types could not be started on the host where job type 3 already was started. Jobs of type 3 could be started only one job per host and could not be started concurrently with jobs of 1 and 3 types. Is it possible to use Throttle Concurrent Build plugin to setup these requirements?

  22. Hi

    I configured the plugin as describe and I attached it to a AWS slave but the plugin does not initiate a new slave in AWS.

    Any ideas?

    1. The plugin does not initiate new agents. It just throttles the existing ones according to the specified settings. In order to provision new agents automatically, use plugins implementing Cloud API

  23. Any chance to have this plugin supported in declarative pipeline ? Is this planned or not ?

    1. You can configure the plugin profile on the pipeline job configuration page

      1. So would I be able to implement this plugin on my pipeline project in the following way?

        1. In Global Configuration under "Throttle Concurrent Builds" add a new throttle called "test"
        2. Then in my Jenkins declarative pipeline file specify a portion of a stage I would like to throttle.

        How would I implement throttling on the following file (if possible)?

        pipeline {
        agent any
        stages {
        stage('Build') {
        steps {
        sh './build'
        }
        }
        stage('Test') {
        steps {
        // THROTTLE SOMETHING HERE WITH 'test'
        }
        }
        }
        }
  24. I would like to throttle a stage in a scripted pipeline.
    Is it a supported feature ?

    Thanks

  25. I have a question about the plugin, i have 35 maximum coccurrent build set to 35, but they don start at same time, is there anyway to launch all time at same time??

    Thank you

  26. I use Throttle Concurrent Plugin in jenkins 2.73.3, and I use is pipeline, Prevent multiple jobs with identical parameters from running concurrently isn't working in pipeline.


    Like this:



    stage("Report"){

    throttle(['test']){
    node("win7"){
    properties([parameters([string(defaultValue: 'rt', description: '', name: 'bbbbb'), text(defaultValue: '''a=b
    c=d''', description: '', name: 'conf')]), [$class: 'ThrottleJobProperty', categories: ['test'], limitOneJobWithMatchingParams: true, maxConcurrentPerNode: 0, maxConcurrentTotal: 2, paramsToUseForLimit: 'conf', throttleEnabled: true, throttleOption: 'category'], pipelineTriggers([])])


    bat '''echo "xxxx"
    ping -n 10 www.google.com'''
    }
    }
    }


    When I input same conf parameter,It's does't wait..