On 2017-06-14, Holger Levsen wrote:
> the distribution of jobs you chose is suboptimal, eg
> rpi2c and wbd0 both run workers 7+8, so if one of these two hosts goes down,
> the other one will have nothing to do as well. similar for opi2b and opi2c
> (4 workers each, and 33+34 shared) or odxu4, odxu4b and odxu4c, they all share
> 2 of 4 workers each, meaning if one of them goes down, another one will be 
> half idle.

I had considered that somewhat, while trying not to spend too much time
on it...

Patch follows with no duplicated builds, available in the
"armhf-reduced-builds" branch:

  https://anonscm.debian.org/cgit/users/vagrant/jenkins.debian.net.git/


For what it's worth, this is exactly the sort of thing, "besides
complexity" that I wanted to fix by splitting the first build, second
build and diffoscope tasks into separate jobs/queues is meant to solve;
having to manually shuffle build job pairings in order to reduce the
impact of downed machines, adding new machines, etc. would be a
non-issue with such a system. Maybe it's too much work to implement as a
trade-off, but it would eliminate certain classes of busywork like this.


live well,
  vagrant

commit 9448e8865d0ef55c7a5d9772a7514bee9ebbe475
Author: Vagrant Cascadian <[email protected]>
Date:   Wed Jun 14 09:24:55 2017 -0700

    reproducible: Rearrange armhf builds so that there are no duplicate
    pairings.

diff --git a/bin/reproducible_build_service.sh 
b/bin/reproducible_build_service.sh
index 3e233dd5..0b148214 100755
--- a/bin/reproducible_build_service.sh
+++ b/bin/reproducible_build_service.sh
@@ -128,56 +128,56 @@ choose_nodes() {
                # Don't forget to update README with the number of builders…!
                #
                 armhf_1)       NODE1=bbx15-armhf-rb            
NODE2=jtx1a-armhf-rb ;;
-                armhf_2)       NODE1=bbx15-armhf-rb            
NODE2=rpi2b-armhf-rb ;;
-                armhf_3)       NODE1=cb3a-armhf-rb             
NODE2=bbx15-armhf-rb ;;
-                armhf_4)       NODE1=cb3a-armhf-rb             
NODE2=bbx15-armhf-rb ;;
-                armhf_5)       NODE1=hb0-armhf-rb              
NODE2=cb3a-armhf-rb ;;
-                armhf_6)       NODE1=rpi2b-armhf-rb            
NODE2=cb3a-armhf-rb ;;
-                armhf_7)       NODE1=rpi2c-armhf-rb            
NODE2=wbd0-armhf-rb ;;
-                armhf_8)       NODE1=wbd0-armhf-rb             
NODE2=rpi2c-armhf-rb ;;
-                armhf_9)       NODE1=bpi0-armhf-rb             
NODE2=cbxi4pro0-armhf-rb ;;
-                armhf_10)      NODE1=cbxi4pro0-armhf-rb        
NODE2=bpi0-armhf-rb ;;
-                armhf_11)      NODE1=cbxi4pro0-armhf-rb        
NODE2=ff2a-armhf-rb ;;
-                armhf_12)      NODE1=ff2a-armhf-rb             
NODE2=cbxi4pro0-armhf-rb ;;
-                armhf_13)      NODE1=ff2a-armhf-rb             
NODE2=ff2b-armhf-rb ;;
-                armhf_14)      NODE1=ff2b-armhf-rb             
NODE2=ff2a-armhf-rb ;;
-                armhf_15)      NODE1=ff2b-armhf-rb             
NODE2=ff64a-armhf-rb ;;
-                armhf_16)      NODE1=ff64a-armhf-rb            
NODE2=ff2b-armhf-rb ;;
-                armhf_17)      NODE1=ff64a-armhf-rb            
NODE2=jtk1a-armhf-rb ;;
-                armhf_18)      NODE1=jtk1a-armhf-rb            
NODE2=ff64a-armhf-rb ;;
-                armhf_19)      NODE1=jtk1a-armhf-rb            
NODE2=odxu4-armhf-rb ;;
-                armhf_20)      NODE1=odxu4-armhf-rb            
NODE2=jtk1a-armhf-rb ;;
-                armhf_21)      NODE1=odxu4-armhf-rb            
NODE2=odxu4b-armhf-rb ;;
-                armhf_22)      NODE1=odxu4b-armhf-rb           
NODE2=odxu4-armhf-rb ;;
-                armhf_23)      NODE1=odxu4b-armhf-rb           
NODE2=odxu4c-armhf-rb ;;
-                armhf_24)      NODE1=odxu4c-armhf-rb           
NODE2=odxu4b-armhf-rb ;;
-                armhf_25)      NODE1=odxu4c-armhf-rb           
NODE2=odu3a-armhf-rb ;;
-                armhf_26)      NODE1=odu3a-armhf-rb            
NODE2=odxu4c-armhf-rb ;;
-                armhf_27)      NODE1=odu3a-armhf-rb            
NODE2=opi2a-armhf-rb ;;
-                armhf_28)      NODE1=opi2a-armhf-rb            
NODE2=odu3a-armhf-rb ;;
-                armhf_29)      NODE1=opi2a-armhf-rb            
NODE2=opi2b-armhf-rb ;;
-                armhf_30)      NODE1=opi2b-armhf-rb            
NODE2=opi2a-armhf-rb ;;
-                armhf_31)      NODE1=opi2b-armhf-rb            
NODE2=opi2c-armhf-rb ;;
-                armhf_32)      NODE1=opi2c-armhf-rb            
NODE2=opi2b-armhf-rb ;;
-                armhf_33)      NODE1=opi2c-armhf-rb            
NODE2=p64b-armhf-rb ;;
-                armhf_34)      NODE1=p64b-armhf-rb             
NODE2=opi2c-armhf-rb ;;
-                armhf_35)      NODE1=p64b-armhf-rb             
NODE2=p64c-armhf-rb ;;
-                armhf_36)      NODE1=p64c-armhf-rb             
NODE2=p64b-armhf-rb ;;
-                armhf_37)      NODE1=p64c-armhf-rb             
NODE2=wbq0-armhf-rb ;;
-                armhf_38)      NODE1=wbq0-armhf-rb             
NODE2=p64c-armhf-rb ;;
-                armhf_39)      NODE1=wbq0-armhf-rb             
NODE2=cbxi4a-armhf-rb ;;
-                armhf_40)      NODE1=cbxi4a-armhf-rb           
NODE2=wbq0-armhf-rb ;;
-                armhf_41)      NODE1=cbxi4a-armhf-rb           
NODE2=cbxi4b-armhf-rb ;;
-                armhf_42)      NODE1=cbxi4a-armhf-rb           
NODE2=cbxi4b-armhf-rb ;;
-                armhf_43)      NODE1=cbxi4b-armhf-rb           
NODE2=cbxi4a-armhf-rb ;;
-                armhf_44)      NODE1=cbxi4b-armhf-rb           
NODE2=cbxi4a-armhf-rb ;;
-                armhf_45)      NODE1=cbxi4b-armhf-rb           
NODE2=ff4a-armhf-rb ;;
-                armhf_46)      NODE1=ff4a-armhf-rb             
NODE2=cbxi4b-armhf-rb ;;
-                armhf_47)      NODE1=ff4a-armhf-rb             
NODE2=jtx1a-armhf-rb ;;
-                armhf_48)      NODE1=ff4a-armhf-rb             
NODE2=jtx1a-armhf-rb ;;
-                armhf_49)      NODE1=jtx1a-armhf-rb            
NODE2=ff4a-armhf-rb ;;
-                armhf_50)      NODE1=jtx1a-armhf-rb            
NODE2=ff4a-armhf-rb ;;
-                armhf_51)      NODE1=jtx1a-armhf-rb            
NODE2=hb0-armhf-rb ;;
+                armhf_2)       NODE1=bbx15-armhf-rb            
NODE2=ff4a-armhf-rb ;;
+                armhf_3)       NODE1=cb3a-armhf-rb             
NODE2=jtx1a-armhf-rb ;;
+                armhf_4)       NODE1=cb3a-armhf-rb             
NODE2=wbq0-armhf-rb ;;
+                armhf_5)       NODE1=hb0-armhf-rb              
NODE2=p64c-armhf-rb ;;
+                armhf_6)       NODE1=rpi2b-armhf-rb            
NODE2=ff4a-armhf-rb ;;
+                armhf_7)       NODE1=rpi2c-armhf-rb            
NODE2=cbxi4b-armhf-rb ;;
+                armhf_8)       NODE1=wbd0-armhf-rb             
NODE2=cbxi4b-armhf-rb ;;
+                armhf_9)       NODE1=bpi0-armhf-rb             
NODE2=cbxi4b-armhf-rb ;;
+                armhf_10)      NODE1=cbxi4pro0-armhf-rb        
NODE2=ff4a-armhf-rb ;;
+                armhf_11)      NODE1=cbxi4pro0-armhf-rb        
NODE2=jtx1a-armhf-rb ;;
+                armhf_12)      NODE1=ff2a-armhf-rb             
NODE2=wbq0-armhf-rb ;;
+                armhf_13)      NODE1=ff2a-armhf-rb             
NODE2=p64c-armhf-rb ;;
+                armhf_14)      NODE1=ff2b-armhf-rb             
NODE2=p64b-armhf-rb ;;
+                armhf_15)      NODE1=ff2b-armhf-rb             
NODE2=opi2c-armhf-rb ;;
+                armhf_16)      NODE1=ff64a-armhf-rb            
NODE2=p64b-armhf-rb ;;
+                armhf_17)      NODE1=ff64a-armhf-rb            
NODE2=opi2c-armhf-rb ;;
+                armhf_18)      NODE1=jtk1a-armhf-rb            
NODE2=opi2b-armhf-rb ;;
+                armhf_19)      NODE1=jtk1a-armhf-rb            
NODE2=opi2a-armhf-rb ;;
+                armhf_20)      NODE1=odxu4-armhf-rb            
NODE2=opi2b-armhf-rb ;;
+                armhf_21)      NODE1=odxu4-armhf-rb            
NODE2=opi2a-armhf-rb ;;
+                armhf_22)      NODE1=odxu4b-armhf-rb           
NODE2=odu3a-armhf-rb ;;
+                armhf_23)      NODE1=odxu4b-armhf-rb           
NODE2=jtk1a-armhf-rb ;;
+                armhf_24)      NODE1=odxu4c-armhf-rb           
NODE2=odu3a-armhf-rb ;;
+                armhf_25)      NODE1=odxu4c-armhf-rb           
NODE2=jtk1a-armhf-rb ;;
+                armhf_26)      NODE1=odu3a-armhf-rb            
NODE2=odxu4-armhf-rb ;;
+                armhf_27)      NODE1=odu3a-armhf-rb            
NODE2=ff64a-armhf-rb ;;
+                armhf_28)      NODE1=opi2a-armhf-rb            
NODE2=odxu4c-armhf-rb ;;
+                armhf_29)      NODE1=opi2a-armhf-rb            
NODE2=cbxi4a-armhf-rb ;;
+                armhf_30)      NODE1=opi2b-armhf-rb            
NODE2=odxu4c-armhf-rb ;;
+                armhf_31)      NODE1=opi2b-armhf-rb            
NODE2=ff64a-armhf-rb ;;
+                armhf_32)      NODE1=opi2c-armhf-rb            
NODE2=odxu4b-armhf-rb ;;
+                armhf_33)      NODE1=opi2c-armhf-rb            
NODE2=ff2a-armhf-rb ;;
+                armhf_34)      NODE1=p64b-armhf-rb             
NODE2=odxu4b-armhf-rb ;;
+                armhf_35)      NODE1=p64b-armhf-rb             
NODE2=ff2a-armhf-rb ;;
+                armhf_36)      NODE1=p64c-armhf-rb             
NODE2=ff2b-armhf-rb ;;
+                armhf_37)      NODE1=p64c-armhf-rb             
NODE2=cbxi4pro0-armhf-rb ;;
+                armhf_38)      NODE1=wbq0-armhf-rb             
NODE2=ff2b-armhf-rb ;;
+                armhf_39)      NODE1=wbq0-armhf-rb             
NODE2=cbxi4pro0-armhf-rb ;;
+                armhf_40)      NODE1=cbxi4a-armhf-rb           
NODE2=bbx15-armhf-rb ;;
+                armhf_41)      NODE1=cbxi4a-armhf-rb           
NODE2=cb3a-armhf-rb ;;
+                armhf_42)      NODE1=cbxi4a-armhf-rb           
NODE2=rpi2c-armhf-rb ;;
+                armhf_43)      NODE1=cbxi4b-armhf-rb           
NODE2=bbx15-armhf-rb ;;
+                armhf_44)      NODE1=cbxi4b-armhf-rb           
NODE2=cb3a-armhf-rb ;;
+                armhf_45)      NODE1=cbxi4b-armhf-rb           
NODE2=hb0-armhf-rb ;;
+                armhf_46)      NODE1=ff4a-armhf-rb             
NODE2=bpi0-armhf-rb ;;
+                armhf_47)      NODE1=ff4a-armhf-rb             
NODE2=wbd0-armhf-rb ;;
+                armhf_48)      NODE1=ff4a-armhf-rb             
NODE2=cbxi4a-armhf-rb ;;
+                armhf_49)      NODE1=jtx1a-armhf-rb            
NODE2=cbxi4a-armhf-rb ;;
+                armhf_50)      NODE1=jtx1a-armhf-rb            
NODE2=rpi2b-armhf-rb ;;
+                armhf_51)      NODE1=jtx1a-armhf-rb            
NODE2=odxu4-armhf-rb ;;
                *)              NODE1=undefined
                                ;;
        esac

Attachment: signature.asc
Description: PGP signature

Reply via email to