Is there a way to programatically generate the adf_publish content in Azure Data Factory? - azure-data-factory

I am new to Azure Data Factory and reading thorugh the docs I found that to generate an artifact to deploy to other DF envs, you need to publish in the dev DF, which generates an adf_publish branch with the jsons to deploy. My question is whether I can run this publish programatically and thus generate the jsons from any branch?

Not sure about programmatically publishing to adf_publish.
But, it's very possible to skip the adf_publish branch entirely and deploy using Azure DevOps or PowerShell straight from the source json instead.

Currently the only way to update the 'adf_publish' branch is by manually clicking the publish button in the UX.
The product group is currently designing a solution to be able to do this programmatically via a DevOps build task. No exact ETA unfortunately.
Thanks,
Daniel

Related

Azure Data Factory development with multiple users

can any one help me how to lock pipeline in ADF, is there any option when one developer is working other should not work, as with multiple developers are working on same pipeline without using Source Control
unfortunately there is no feature in Azure portal for Azure data factory to lock the pipeline changes if 2 or more are working on the same pipeline. You would have to create a clone of existing pipeline and work on those clones else the best way is to use source control like git

Synapse: Automated publishing for continuous integration and delivery without manual publishing ("The new CI/CD flow")

I'm trying to implement a fully automated ci/cd pipeline for my synapse workspace using azure devops piplines. I have a working version where everything except pushing the "Publish" Button inside the synapse UI after merging a feature branch into main is automated, but i cannot figure out how to automate this last step.
Basically I'm at the "Current CI/CD flow" in this article and i want to implement "the new CI/CD flow", just using Synapse instead of Data Factory.
Sadly, the article marks the described solution as only valid for Data Factory and not for Synapse and I couldn't find anything about using the used ADFUtilities NPM package for Synapse workspaces.
So what is the recommended way for automatically publish all changes after a pull request was merged into the main branch for synapse pipelines? Is there even a way or are we stuck with pressing the "Publish" Button by ourself?
In Synapse, There is a way to automate the publish action on commit to collaboration branch.
Use "Synapse workspace deployment" extension task version 2.
https://marketplace.visualstudio.com/items?itemName=AzureSynapseWorkspace.synapsecicd-deploy
More details are in the page:
https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/automating-the-publishing-of-workspace-artifacts-in-synapse-cicd/ba-p/3603042

Multiple linked artifacts in Azure Release Pipeline

I've configured Release Pipeline with two artifacts linked to it and each artifacts has set to create release whenever new build is available. These two artifact come from two different modules on separate GIT repo's.
In this case, release pipeline will get triggered twice(one per artifact). But I wanted it to get triggered only after all the linked artifact builds are succeeded. Tried finding solution in the docs, but couldn't find it much helpful. Any suggestions please.
I am afraid it is not possible to trigger a release only after all the linked artifact builds are succeeded. Azure devops doesnot have such a feature to configure this yet. A new release will now be triggered when either of the linked artifacts build is succeeded.
You will have to create two different release pipelines, one for each artifact. Or you will have to find a way to put BuildA and BuildB in one artifact.
You can submit a feature request to Microsoft Development team. Hope they will consider implementing this feature in the future sprint. Or you can vote on this existing user voice.
This is not possible to configure it out of the box. It will trigger release just after one of artifact become available. If you want to overcome this, you need to create some custom app to monitor artifacts and trigger release once both artifacts meet some condition.
There is topic in developer community to implement this.

How to publish build artifacts to external organisation using Azure DevOps?

I have an ASP web application that I have building in an Azure DevOps Build Pipeline. That is all fine.
I want an external organisation to be able to define their own Azure DevOps Release Pipeline to consume the build artifacts produced by our Build Pipeline. I need the access of that external organisation to be restricted with some sort of credentials (i.e. I don't want the project to be public to everyone). The external organisation should be able to deploy the latest version.
I thought this would be a relatively simple process using only Azure tools (particularly with reference to Feeds), but have tried a number of different approaches based on the documentation but all have failed. I don't want to publish to GitHub - I just want to keep everything inside Azure. I have tried using Universal Packages with Feeds, but the Release Pipeline can only pull a specific version from the feed rather than LATEST.
Does anyone have any recommended approaches I should take?
There is Latest option in the feed of your Release Pipeline:

Azure datafactory deployment automation from multiple branches

I want to create automated deployment pipeline for azure datafactory.
For one stream of development we can configure it using doc
https://learn.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment
But when it comes to deploying to two diff test datafactories for parrallel features development (in two different branches), it is not working because the adb_publish which gets generated is only specific to the one datafactory.
Currently we are doing deployement using powershell scripts and passing object list which needs to be deployed.
Our repo is in Azure devops.
I tried
linking the repo to multiple df but then it is causing issue, perhaps when finding deltas to publish.
Creating forks of repo instead of branches so that adb_publish can be seperate for the every datafactory - but this approach will not work when there is a conflict, which needs manual merge, so the testing will be required again instead of moving to prod.
Adf_publish get generated whenever you publish. Publishing takes whatever you have in your repo and updates data factory with it.
To develop multiple features in parallel, you need to just use "Save". Save will commit your changes to the branch you are actually working on. Other branches will do the same. Whenever you want to publish, you need to first make a pull request from your branch to master, then publish. Any merge conflict should be solved when merging everything in the master branch. Then just publish and there shouldn't be any conflicts, and adf_publish will get generated after that.
Hope this helped!
Since a GitHub repository can be associated with only one data factory. And you are only allowed to publish to the Data Factory service from your collaboration branch. Check this
It seems there is not a direct and easy way to accomplish this. If forking repo as workaround, you may have to solve the conflicts before merging as #Martin suggested.