Version 1.1 of AzDoAPITools is live!
In my previous post I did a comparisson between AzDoAPITools and the Microsoft “Export to YAML” functionality.
The results were self-reflecting and showed some urgent ToDo’s on my side which were either already there or which went unnoticed and showed up when I compared both tools.
This blog is going to be short because people will need to enjoy their holidays. the new version can be found on PSGallery and GitHub.
Overview of changes
- Added Pipeline / Job demands
- Added pipeline timeouts to every job
- Added Step Properties
Added Agentless pools
- Changed Job id / displayName notation
- Changed order of triggers
- Changed order of job properties
- Fixed syntax for included / excluded paths and branches notation
- Fixed DST bug
- Fixed empty jobs syntax
- Fixed notation for job properties for timeout and canceltimeout
In depth changes
Additional functionality
Added Pipeline / Job demands
Demands which are stated inside each job and those specified at pipeline level will now show in the job clause like so
These will be included for both Microsoft hosted agents and self-hosted agents. Serverless agents will not have demands even though they are stated.
Added pipeline timeouts to every job
If a pipeline timeout is being declared in the options tab which differs from the defaults they will be included in each job which occurs in the pipeline.
if a non-default time-out has been declared on that specific job it will take precedence over the pipeline declared timeout.
Added Agentless pools
Agentless jobs aka serverless jobs are now supported. Previously these would be ignored or included with a wrong syntax because I never found myself using them. For the people who do they are now included and show in YAML like this:
Changes
Changed Job id / displayName notation
In V1.0 I picked up the displayname from the agent job and would concat them with _ to make a unique identifier. However seeing the MS tool they pick up the actual ref from the job and add the displayname as displayName in the syntax. I changed my code to behave the same notation to prevent accidental id clashes when people would have similar displaynames
This will result in the following YAML:
Changed order of triggers
Nothing special here. just the ordering of triggers are now in line to the Microsoft output
Changed order of job properties
Nothing special here. just the ordering of properties are now in line to the Microsoft output
Bugfixes
Fixed syntax for included / excluded paths and branches notation
When testing the results in adding new functionality I had overlooked a wrongful syntax where if both included / excluded options would exist they would be noted as a single array. instead they should be noted as a single node with a child array.
Old syntax:
New Syntax:
Fixed DST bug
When winter time was arriving in Europe I made a note to test what would happen before and after DST changes would occur.
on DST changing back to winter time the script would still act as if it was in summer time resulting in too many hours extracted in the schedule.
This has been addressed. Only rare occurrence which will not be accounted for is running the script during an actual night where DST shift happens. But thats such a rare occurrence that I will not be fixing it. mostly these script run daytime anyway.
Fixed empty jobs syntax
When doing the syntax for agentless jobs I noticed how the MS Export tool returned a nice empty array in YAML notation:
When comparing this with my own results my tool would return the following:
This has been adressed for all kinds of jobs.
Fixed notation for job properties for timeout and canceltimeout
When checking my generated Syntax on these properties I received an error when trying to run them. The syntax used was:
This is wrong because it was directly taken from the REST API without conversion. The correct syntax should be:
This has been adressed for all kinds of jobs.
Wrap-up
So that’s it for this version. I will start working on a V1.2 next which will primarily be focussed on non-Azure DevOps sources integration (Github, Gitlab, BitBucket) and the possibility to actually import the generated YAML as a new pipeline in Azure DevOps.
Again you can find the new V1.1 version on PSGallery and GitHub.
Thanks for reading and enjoy your holidays!