[Twisted-Python] Azure Pipelines

Kyle Altendorf sda at fstab.net
Sun Jun 23 09:11:09 MDT 2019



On 2019-06-22 14:05, Amber Brown wrote:
> On 22/6/19 9:59 am, Kyle Altendorf wrote:
>> 
>> Hmm...  I'm running Python inside a build to generate the matrix for 
>> that build (with a yaml file for a pipeline).  Now I'm curious what 
>> matrixing is being used that isn't supported yet.  But perhaps it 
>> isn't worth bothering to work through.
>> 
>> Cheers,
>> -kyle
> 
> It now says:
> 
> #Multi-configuration and multi-agent job options are not exported to
> YAML. Configure these options using documentation guidance:
> https://docs.microsoft.com/vsts/pipelines/process/phases
> 
> So maybe it'd work? Anyone want to volunteer to see? :)

I don't know what our setup is now so I can't really compare.  Do we 
have a matrix built from a few axes?  Like Windows/macOS and py2.7/3.7 
generating 4 builds for us?  AFAIK that isn't yet supported.

https://github.com/microsoft/azure-pipelines-yaml/issues/20

But, you can certainly write a job and list out the four (or whatever) 
parameter sets you want it to be run against.  For romp I went ahead and 
implemented a little Python cross matrixer which runs as the first job 
and outputs JSON.  It's output is used as the matrix def for another job 
which does whatever it's supposed to.  So there are options anywhere 
from hand-coded YAML to build-parameter-dependent on-the-fly-generated 
JSON to configure a 'matrix', and whatever in between.  I'm guessing at 
present we'd be satisfied with just hand-coded YAML parameter sets.  
Maybe if we moved all platforms etc to Azure we'd like a generated 
matrix (either a manual script when the matrix definition is changed or 
in-build generation though that of course adds a bit of build time).  
Honestly, I would expect to usually want exceptions to any basic matrix 
cross-producting system so just defining it with regular Python code 
from the get-go has some upsides.

I need to tweak exttrs a bit and romp has a bit of a specialized purpose 
but they are the two examples I have.

https://github.com/altendky/exttr/blob/60aa5d6e9f04631b8e86552620f2d9cd2a0a3a04/azure_job_template.yml#L15-L43
https://github.com/altendky/romp/blob/0b05a7830ba1b02e503dd0004ffdce5e0ae3164f/azure-pipelines.yml#L43

After all that...  is this actually what we are talking about when it 
comes to matrixing?

Cheers,
-kyle




More information about the Twisted-Python mailing list