Missing deployment templates in Synapse 'main' branch - azure

Few days ago I had to recreate Azure Synapse Workspace. I had connected Git repository (Azure DevOps Git).
After Workspace recreation I reconnected to repo and restored whole project (pipelines, linked services etc.).
Unfortunately after this action template files are not being updated in main branch after Publishing changes in Synapse:
They are being updated only in Publish branch which should be rather read only:
I tried to create completely new repo, but with the same result - main folder is being created and synced properly:
but Templates folder and files are not created in main branch.
I'm using these templates for deployment to production and I need to make customizations so it's much easier to work with them in main branch.
Do you know how could I 'restore' previous behaviour?

Templates folder and files are not created in main branch.
To recover a deleted Azure Synapse instance that has source control configured either in GitGub or Azure DevOps, you need to create the new Branch. Follow below steps.
Create a new Azure Synapse instance of the service.
Reconfigure Git with the same settings, but make sure to import existing resources to the selected repository and choose New branch.
While configuring the repository, under Collaboration branch choose + Create new and create a new branch.
Create a pull request to merge the changes to the collaboration branch and publish.
In case there was a Self-hosted Integration Runtime in a Synapse workspace, a new instance of the IR must be created in a workspace. For an on-premises or virtual machine IR instance, they must be uninstalled and reinstalled, and a new key obtained. After setup of the new Integration Runtime is completed, the Linked Service must be updated to point to new IR and the connection should be tested again, or it will fail with error invalid reference.
I have tried to repo the same with a sample pipeline in the workspace, and when I restored it I can see both pipeline and template folder in the Repo. Refer below image.
Please refer Troubleshoot CI-CD, Azure DevOps, and GitHub issues in Azure Data Factory and Synapse Analytics to know more on backup and restore Azure Synapse.

Related

Azure Data Factory Environment Set up

I am setting up an environment for ADF. I have multiple projects and Segments which I need to support. I have noticed that I can only set up one publish branch in ADF.
Should we create ADF for each project?
What is the recommended approach for setting up an environment ?.
Multiple ADFs are required if there is complete different project with different data. If you want to work in same project and just need to manage different environment like development, testing and prod; all this can be managed in one ADF.
A developer creates a feature branch to make a change. They debug their pipeline runs with their most recent changes. For more information on how to debug a pipeline run, see Iterative development and debugging with Azure Data Factory.
After a developer is satisfied with their changes, they create a pull request from their feature branch to the main or collaboration branch to get their changes reviewed by peers.
After a pull request is approved and changes are merged in the main branch, the changes get published to the development factory.
When the team is ready to deploy the changes to a test or UAT (User Acceptance Testing) factory, the team goes to their Azure Pipelines release and deploys the desired version of the development factory to UAT. This deployment takes place as part of an Azure Pipelines task and uses Resource Manager template parameters to apply the appropriate configuration.
After the changes have been verified in the test factory, deploy to the production factory by using the next task of the pipelines release.
Note
Note: Only the development factory is associated with a git repository. The test and production factories shouldn't have a git repository associated with them and should only be updated via an Azure DevOps pipeline or via a Resource Management template.

Configure Azure DevOps repository in Databricks through ARM template or Powershell

I am looking for a sample ARM template which can setup my Azure DevOps repository into Azure Databricks. This will help me deploy my Master branch directly on ADB workspace.
I tried to do manually on portal and it works, but the repos path for the notebooks shows my email_id, which is not good in Production.
I want to configure through a Powershell OR an ARM template while creating Databricks. The same problem I am facing on Azure dataFactory as well.
Please help me resolve it.
It's not possible as of today - there is no API for creating a checkout. It will be possible only when Databricks Repos will start to provide corresponding API for creating the checkouts of repositories, not only "Update checkout" API that is available right now.
If you're concerned with the checkout created in your own folder, you can just create a Folder inside Repos, call it like "Production", and then do checkout inside that folder (pictures are taken from my demo of Repos with Azure DevOps):
To deploy Notebooks from your master branch to another workspace, I would recommend to trigger a deployment pipeline from the master branch onto the target databricks worskpace.
That way, no need to setup Repos in the target environment.
You use Repos in your development workspace (with your email in path)
You commit to the branch you work on and eventually merge / PR to master
Once on Master branch, a DevOps pipeline is triggered and deploys the notebook to your target workspace on the path you want

How to backup online Azure DevOps source control and restore to an instance of on-premises Azure DevOps Server

I am trying to determine how to backup the online ADO account that I created on Microsoft's servers so that I can restore it on my own physical server. I have a few projects already started along with work items, repositories, pipeline jobs and NuGet artifacts already in place. It would take quite a while to rebuild the projects manually, not impossible, just not desirable.
I have looked and have not found any resource as to how to perform this or if it is even possible. Any help from someone who knows would be greatly appreciated!
Currently there is available extension: Azure DevOps Migration Tools, which allow you to migrate Teams, Work Items, Plans & Suits, and Shared Queries, & Pipelines from one Project to another in Azure DevOps/TFS both within the same Organization, and between Organizations. See: https://nkdagility.github.io/azure-devops-migration-tools/ for latest guidance.
In addition, for repositories, there is no such extensions, you could try to clone an existing Git repo and then push it to a new remote repo server.
BTW, you could use Rest APIs: Artifact Details to get artifacts and then publish them to new feed on Azure DevOps Server.

Export ARM template for ADF and deploy it in another ADF instance using DevOps

I have two instances of Azure Data Factory in which one is integrated with GIT repo and another is not.
I have taken ARM templates from non GIT ADF instance using Export ARM template option.
I have to deploy this ARM template in the second ADF instance using azure DevOps pipeline.
How should I do this process using the devOps pipeline.
Is there any way to fetch this downloaded ARM templates using devOps pipeline and deploy in another ADF instance?
Also before deployment I have to replace some text in the json files. (ex: instance01/tmp/file to instance02/tmp/file) Is there any shell script that can be make use here?
Deploying the code to the other Data Factory will not be a problem.
After downloading the ARM template for the non Git integrated one there should be a parameter for what Data Factory you are deploying to. It would be as simple as updating that parameter to point to the other instance of Data Factory and deploying the ARM template either via Azure DevOps or Powershell w/ the Incremental deployment. This is possible since the deployment will do a delta and each pipeline/linked service/ data set will be it's own resource it should deploy the new. Just be careful if there are any conflicts on the naming standard.
The issue you will run into will be the source code definition. The way the CI/CD integration works is the collaboration branch, usually master, is defined and when clicking publish the changes are consolidated and pushed to adf_publish by default. The adf_publish will be the definition of the Data Factory that is published. Since we are publishing outside of a repository neither the master nor adf_publish will have any knowledge of the changes. Unfortunately given that adf_publish cannot merge back into master the best way might be to stand up a new repo or reimport the data factory definition after the manual publish has occurred.

Where to find artifact in Azure DevOps Custom agent pool

I am using a custom agent pool in Azure DevOps. I have made a build and published the artifact but I want to update a file in artifact without creating a new build. how we can do that in Publish Artifacts task it showing that upload /home/ubuntu/myagent/_work/4/a to file container: #/9464/Artifact-Name.
I am logged in to agent pool server and checked all the directories but I couldn't find the file container location. Can any buddy help me to find the Artifact location in agent pool.
Thanks in advance.
Based on your drop location, you probably can't. The only way I imagine this would be possible is if you were publishing to a share location instead.
When you publish artifacts (that would be visible from the build summary), those are stored on the Azure DevOps database content tables and are immutable. As Jane Ma mentioned in a comment out about the local files:
The directory referenced by $(Build.ArtifactStagingDirectory) is
cleaned up after each build. [...] you can't edit published artifacts.
You can get them in agent pool's local file, but all local operations
are not synced to the Azure DevOps. If you want to do follow-up work
on this artifact, you need to run a new build to update it.

Resources