Assign Build Job to specific Configuration in Matrix?

matt_mckinstry's Avatar

matt_mckinstry

08 Jun, 2018 01:48 PM

If we upgrade to the plan with 2 x concurrent build jobs, is it possible to assign a build matrix configuration to a specific build job?

In our case we would like our branches master & develop to be assigned to build job 1 and hotfix or feature branches to be assigned to build job 2. This would alleviate an issue we are having with waiting on builds as our master and develop branches kick off builds for 5 configurations. These configurations need to be executed sequentially because of how we generate assembly info and kick off Integration tests.

I am aware of the build priorities functionality and I am using them, however in a big team everyone's branches seem more important than others.

Thanks

  1. 1 Posted by Ilya Finkelshte... on 08 Jun, 2018 07:39 PM

    Ilya Finkelshteyn's Avatar

    I am still not sure if I understood the problem correctly, let me re-formulate it:

    • Build for master and develop branches should run jobs for 5 configuration sequentially
    • Build for hotfix and feature branches has lower priority than the one for master and develop branches

    If I am correct, I would do the following:

    • Create separate project for master and develop branches:

      • allow to build only master and develop with branches white listing
      • Set Max jobs to 1 (ensure sequential execution)
      • Set higher build priority (lower number in Build priority)
    • Create separate project for hotfix and feature branche:

      • allow to build all except master and develop with branches blacklisting
      • Set Max jobs to 1 (not sure if sequential execution needed here too)
      • Set lower build priority (higher number in Build priority)
  2. 2 Posted by matt_mckinstry on 08 Jun, 2018 08:46 PM

    matt_mckinstry's Avatar

    Thanks for your quick reply Ilya. Ill try and explain a bit better what im trying to accomplish.

    Our build time per configuration is roughly 15 mins. Obfuscating, signing and installers are slow.

    In our case Master and Develop build 5 distinct configurations. Release x86 & x64, ReleaseFlavour1 x64, ReleaseFlavour2 x64, ReleaseFlavour3 x64. Flavours are recent addition. We need these to build sequentially as we Have a custom assembly patching mechanism on build job 1 that writes back to source control etc. This increments the 3rd section in the assembly version for us e.g. 1.0.123.0

    Hotfix and Feature branches only build a single configuration Release x64. They use AppVeyor provided build number to patch assembly info e.g. 1.0.123.1536

    Our current build priorities are:
    Master = 1 This is release and must always win
    Hotfix = 2 Customers dont wait
    Feature = 3 Devs dont like waiting either
    Develop = 4 PR merges and testing, dont like waiting either

    Our issue is that our Develop build jobs keep getting bumped down the queue by features and hotfixes which makes Testing unhappy. Support also dont want to waiting 75 mins+ on their hotfix build if it is queued after Develop. Same with Devs on Feature branches.

    What we would ideally like is that with the 2 concurrent jobs plan.
    Assign master and develop to always use concurrent job 1. Thus they can pump out config builds sequentially taking 15 mins x 5 without slowing down Support or Dev.
    Concurrent job 2 could be assigned to build branches Feature and Hotfix building these relatively fast build configurations when needed. Obviously this could lead us to not fully utilising our concurrent jobs, but thats ok

    Is this something that is possible or could be supported in the future? I see this as an extra property such as build_job: 1 against a branch config in the build matrix.

  3. 3 Posted by Ilya Finkelshte... on 11 Jun, 2018 07:28 PM

    Ilya Finkelshteyn's Avatar

    I see. The way how scheduling is designed does not allow this scenario inside single account.

    However you can create separate AppVeyor accounts, each with one concurrent job. In first account you can have separate projects for Master and Develop branches, which Master has higher priority. In second -- separate projects for
    Hotfix and Feature branches, with higher priority for Hotfix.

    I have to admit that it is quite annoying to switch between accounts if you need to check build statuses, but we soon will make it easier (without re-login). Also you can keep different accounts opened in different browsers.

  4. Ilya Finkelshteyn closed this discussion on 31 Aug, 2018 07:53 PM.

Comments are currently closed for this discussion. You can start a new one.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac