Add support for Azure DevOps API-based datasource #24820
Replies: 8 comments 15 replies
-
@JamieMagee I found the old Azure Pipelines issue and for most of the problems with the current extension, I think I know the solution and have documented the correct APIs to use above. |
Beta Was this translation helpful? Give feedback.
-
Related renovatebot/azure-devops-marketplace#42 If it is not fixed it is very confusing because it creates a PR for you to upgrade to a version that does not exist in your organization's instance yet since from what @jessehouwing comments not all instances are upgraded at the same time nor do you know when it will be upgraded. That detail is beyond the user's control, i.e. Microsoft decides when to update each instance in the Azure DevOps Server (Cloud). Is there at least some workaround @jessehouwing that can be done with package rules (consume the organization's json and check if that version exists or not as a precondition)? Or is it a too advanced case for package rules? |
Beta Was this translation helpful? Give feedback.
-
@jessehouwing to advance this feature could not be divided into several iterations? Because otherwise I see that it will never be addressed? The basic thing is that the data source changes from that static source in that repository to use the API you mention so that at least the PRs are already reliable in that sense and the version to which you are going to update really exists in your organization. The manager is in beta so it makes sense to first cover the most common and basic cases and then extend to more advanced cases: Azure DevOps Server, GitHub + Azure DevOps, task renames, task deprecations, task previews, ... |
Beta Was this translation helpful? Give feedback.
-
Am i right in following this that this will also be able to cover custom extensions which have been published internally? |
Beta Was this translation helpful? Give feedback.
-
Hey there, I see that #32966 was merged. Is there any documentation on how to implement the changes on our side so that it uses |
Beta Was this translation helpful? Give feedback.
-
I've managed to get this going too with the host rules described above. One thing I think I've noticed is that some of our pipelines have used to the contribution id to refer to the task rather than the name. Would people be comfortable with the checks to go against both the name and the contribution ids of the task ? 🤔 |
Beta Was this translation helpful? Give feedback.
-
The old file based system looks at a combination of names:
Extension.contribution.name
Extension.contrikution.id
Name
Id
Those are the 4 officially supported ways to name your tasks in yaml.
…On Thu, Jan 16, 2025, 08:47 Richard Dalziel ***@***.***> wrote:
I've managed to get this going too with the host rules described above.
One thing I think I've noticed is that some of our pipelines have used to
the contribution id to refer to the task rather than the name. Would people
be comfortable with the checks to go against both the name and the
contribution ids of the task ? 🤔
—
Reply to this email directly, view it on GitHub
<#24820 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA724S7JXDYQ7ANOJFRMTQD2K5PZ7AVCNFSM6AAAAABRDZHY72VHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTCOBVGE3DOMI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
@RDalziel @jessehouwing now that I have made this first functional version, it is a matter of improving it with the initial checklist of @jessehouwing that has created in this thread. I would like you to give me a hand if possible, thanks. |
Beta Was this translation helpful? Give feedback.
-
What would you like Renovate to be able to do?
Renovate has support for Azure-DevOps built-in tasks and the Azure DevOps Marketplace's public tasks.
But it doesn't support tasks that were installed directly into an Azure DevOps Organization (
tfx build tasks upload
) nor does it support extensions that are privately listed on the marketplace.Renovate also won't be too helpful for people using Team Foundation Server or Azure DevOps Server, since these might not even have all tasks available, nor won't they have the same list of built-in tasks available to them.
Each instance of Azure DevOps however, has a set of APIs that one can query to provide grab the data needed directly from the instance. Below is a set of APIs to query to get all the information required to give proper advice
If you have any ideas on how this should be implemented, please tell us here.
name
's andid
s (GET https://dev.azure.com/jessehouwing/_apis/distributedtask/tasks/
)task.name
task.id
task.contributionIdentifier.task.name
task.contributionIdentifier.task.id
"serverOwned":true
id
to get a list of versions (GET https://dev.azure.com/jessehouwing/_apis/distributedtask/tasks/{{task.Id}}?allversions=true
ResourceArea
's API to find the ExtensionManagement API (GET https://dev.azure.com/jessehouwing/_apis/resourceareas/
)GET https://extmgmt.dev.azure.com/jessehouwing/_apis/extensionmanagement/installedextensionsbyname/jessehouwing/jessehouwing-vsts-variable-tasks?api-version=7.1-preview.1&assetTypes=Microsoft.VisualStudio.Services.Manifest
) using the contribution identifiertask.contributionIdentifier
.repository.uri
) from the fetched manifest file (GET https://jessehouwing.gallerycdn.vsassets.io/extensions/jessehouwing/jessehouwing-vsts-variable-tasks/3.0.10/1670319234705/Microsoft.VisualStudio.Services.Manifest
)Ideally Renovate should also suggest:
task.id
, a highertask.version
, but a differenttask.name
.task.deprecated: true
.task.preview: true
.If RenovateBot would support Private Extensions, then a few new issues pop-up, since private extensions can publish the same tasks (same
task.name
), even with the sameversion
. In that case a task must be disambiguated by itstask.id
or by using the long nametask.contributionIdentifier.task.name
.The current mechanism, with statically generated files, would allow suggestions for Azure DevOps Server in the case of a non-marketplace connected server instance where the admin would have to download and install the extension manually.
We should probably make the desired sources configurable, as renovatebot might expose the names of internal extensions and tasks through calling out to GitHub.
Beta Was this translation helpful? Give feedback.
All reactions