0
votes

«Publier» par programme sur Azure Data Factory via PowerShell ou étape de pipeline Azure Devops

Cette question n'aura pas de code car je n'ai trouvé aucun moyen possible jusqu'à présent mais même pas un non, ce n'est pas possible .

Azure Data Factory utilise la branche adf_publish comme branche officielle au-dessus du maître. ADF publie les définitions de tous les pipelines, déclencheurs, services liés, etc. dans cette branche adf_publish lorsque sur l'interface graphique l'utilisateur clique sur Publier .

J'ai besoin de faire cela par programme. Je ne veux pas que quelqu'un aille sur le portail ADF lui-même et clique sur le bouton Publier pour que la branche adf_publish soit mise à jour correctement. J'ai besoin de savoir s'il existe un code PowerShell (ou une étape dans le pipeline Azure Devops) qui me permet de le faire. Merci d'avance!

MISE À JOUR :

Après la réponse de Kevin ci-dessous, je l'ai essayé avec le script Powershell suggéré et semble réussir, mais malheureusement, il ne semble pas faire ce qu'il est censé faire. Chaque fois que j'essaye de «publier» à partir du portail ADF, je vois qu'il rassemble les modifications de la branche de collaboration (maître) et tente de les fusionner dans la branche Adf_Publish. Un exemple est la photo ci-dessous répertoriant tous les changements qui seront fusionnés.

entrez la description de l'image ici

Donc, en théorie, le script PowerShell devrait faire la même chose ou c'est ce que j'essaie de réaliser alors qu'à la place, il semble ne rien faire:

entrez la description de l'image ici

Est-ce que je manque quelque chose?


2 commentaires

Salut @Tarta. Y a-t-il une mise à jour sur ce ticket? N'hésitez pas à me faire savoir si les réponses pourraient vous aider. Juste un rappel de cela .


@ KevinLu-MSFT veuillez consulter le commentaire sur votre réponse ainsi que ma mise à jour pour vous montrer ce qui se passe lors de la mise en œuvre de votre solution. Merci!


3 Réponses :


0
votes

C'est certainement possible et tout à fait une exigence attendue dans le cas du monde réel. Veuillez passer par l' intégration et la livraison continues dans Azure Data Factory . C'est un guide trop long pour le mettre comme réponse en bref, vous devez donc le lire en détail :). Vous trouverez ci-dessous une courte citation du scénario pour vous facturer:

  • Une fabrique de données de développement est créée et configurée avec Azure Repos Git. Tous les développeurs doivent être autorisés à créer des ressources Data Factory telles que des pipelines et des ensembles de données.

  • Un développeur crée une branche de fonctionnalité pour effectuer une modification. Ils déboguent leurs exécutions de pipeline avec leurs modifications les plus récentes. Pour plus d'informations sur le débogage d'une exécution de pipeline, consultez Développement itératif et débogage avec Azure Data Factory .

  • Une fois qu'un développeur est satisfait de ses modifications, il crée une demande d'extraction de sa branche de fonctionnalités vers la branche principale ou de collaboration pour que leurs modifications soient examinées par des pairs.

  • Une fois qu'une demande d'extraction est approuvée et que les modifications sont fusionnées dans la branche principale, les modifications sont publiées dans la fabrique de développement.

  • Lorsque l'équipe est prête à déployer les modifications dans une usine de test ou UAT (User Acceptance Testing), l'équipe accède à leur version Azure Pipelines et déploie la version souhaitée de l'usine de développement sur UAT. Ce déploiement a lieu dans le cadre d'une tâche Azure Pipelines et utilise les paramètres de modèle Resource Manager pour appliquer la configuration appropriée.

  • Une fois les modifications vérifiées dans la fabrique de test, déployez dans la fabrique de production à l'aide de la tâche suivante de la version des pipelines.

Pour automatiser la fusion de la branche master branche adf_publish dans une build CI qui s'exécute sur master, vous pouvez consulter les commandes Run Git dans un script . Cela fusionne d'une fonctionnalité à l'autre, mais vous ferez le contraire.


8 commentaires

Il me manque quelque chose ici. Exactement cette étape "Une fois qu'une pull request est approuvée et que les modifications sont fusionnées dans la branche principale, les modifications sont publiées dans la fabrique de développement." est celui qui me manque. J'ai besoin de publier les modifications par programme dans la branche adf_publish. À partir de là, j'ai mon propre pipeline de versions dans Azure Devops qui agit sur la branche adf_publish, ce qui signifie qu'elle la sélectionne, qu'elle effectue toutes les substitutions de modèles ARM, puis se déploie aux étapes de test, d'acceptation et de production, exactement comme expliqué dans le guide . Est-ce que je mets quelque chose de mal?


Je ne sais pas si je pourrais te suivre. Que vous manque-t-il ou quel est le problème / erreur que vous rencontrez dans docs.microsoft.com/en-us/azure/data-factory/... ?


Non je n'obtiens aucune erreur .. ma configuration est la suivante, j'ai mon repo contenant du code ADF et d'autres codes (sql par exemple). Lorsque je fusionne quelque chose dans master, mon pipeline de version CD prend le code SQL et le déploie dans l'environnement de test. Qu'arrive-t-il au code ADF? Reste dans Master, jusqu'à ce que vous alliez dans le portail ADF et que vous cliquiez sur le bouton Publish pour fusionner Master dans Adf_Publish. Lorsque cela se produit, un 2ème pipeline sera déclenché (cause de l'écoute sur Adf_Publish) fera toutes les astuces expliquées dans la documentation avec le modèle ARM et se déploiera à différentes étapes.


Donc ... tout est automatisé. Sauf ce bouton Publier :) J'ai besoin d'automatiser cela aussi, soit avec une étape dans le pipeline Azure Devops, soit via PowerShell. J'espère que je pourrais m'expliquer correctement mais si ce n'est pas le cas, n'hésitez pas à demander!


Cela se déploie à partir de la branche git publish. Donc, quelqu'un doit pousser vers cette branche soit en publiant à partir d'un autre ADF comme à partir d'un environnement de développement / test, soit en fusionnant à partir d'une autre branche :).


docs.microsoft.com/en-us/azure/data-factory/media/…


Correct! Ainsi, la publication depuis le Dev / Test ADF (ou depuis Master) dans la branche adf_publish se fait via ..?


Vous pouvez probablement envisager d'automatiser la fusion de la branche master à la branche adf_publish à partir d'une build CI qui s'exécute sur master. docs.microsoft.com/en-us/azure/devops/pipelines/scripts/… Cela fusionne d'une fonctionnalité à l'autre, mais vous ferez le contraire.



1
votes

Vous pouvez vous référer à ce ticket dans Github.

Vous pouvez installer les modules PowerShell Az.DataFactory et azure.datafactory.tools , puis exécuter la méthode Publish-AdfV2FromJson pour publier.

Voici un exemple d'Azure Devops:

variables:
  ResourceGroupName: 'rg-devops-factory'
  DataFactoryName: 'SQLPlayerDemo'
steps:
- powershell: |
   Install-Module Az.DataFactory -MinimumVersion "1.7.0" -Force
   Install-Module -Name "azure.datafactory.tools" -Force
   Import-Module -Name "azure.datafactory.tools" -Force
  displayName: 'PowerShell Script'
steps:
- task: AzurePowerShell@4
  displayName: 'Azure PowerShell script: InlineScript'
  inputs:
    azureSubscription: 'Subscription'
    ScriptType: InlineScript
    Inline: |
     Publish-AdfV2FromJson -RootFolder "$(System.DefaultWorkingDirectory)/_ArtifactName_/" -ResourceGroupName "$(ResourceGroupName)" -DataFactoryName "$(DataFactoryName)" -Location "$(Location)" -Stage "$(Release.EnvironmentName)"

    FailOnStandardError: true
    azurePowerShellVersion: LatestVersion

Pour plus d'informations, vous pouvez vous référer à ce document d'introduction

D'autre part, vous pouvez utiliser la tâche prête à l'emploi : Publish Azure Data Factory partir de déployer Azure Data Factory par l'extension SQLPlayer .


1 commentaires

Désolé pour ma réponse tardive ... j'ai eu le temps d'enquêter sur le problème ces derniers temps. il semble que le script fonctionne ou du moins il se termine sans problème. Cependant, je m'attendrais à ce que chaque fois que je publie (dans ce cas par programme), la branche Adf_publish soit également mise à jour dans Git. C'est du moins ce qui se passe lorsque je publie depuis le portail et me confirme qu'effectivement la publication a réussi. Mais lorsque je publie via ce script, cela ne se produit pas: /



0
votes

@Tarta, il y a beaucoup de choses mélangées ici. Je ne veux pas tout répondre ici, laissez-moi simplement me concentrer sur l'outil que vous avez essayé d'utiliser (azure.datafactory.tools), ce qui signifie - le premier problème original. En regardant la capture d'écran du journal:
entrez la description de l'image ici
Aucun objet n'a été trouvé par le module PowerShell, ce qui signifie probablement que vous avez fourni le mauvais emplacement (dossier) à l'ADF. Veuillez lire attentivement la documentation et assurez-vous que vous transmettez le bon dossier lors de l'exécution de l'applet de Publish-AdfV2FromJson .
N'oubliez pas non plus que l'outil déploie ADF à partir du master de code ou d'une autre branche de collaboration que vous avez sélectionnée. Le module ne se soucie pas du tout de ce qui se passe dans la branche adf_publish . Les modifications apportées à cette branche sont effectuées par le service ADF lorsque vous cliquez sur PUBLIER, mais vous n'avez pas à vous en préoccuper lorsque vous choisissez de déployer à partir du code par azure.datafactory.tools ou l' extension DevOps . De plus, j'espère que la page que j'ai préparée vous aidera un peu à comprendre tout le concept de déploiement d'ADF à partir du code (et non de adf_publish): https://sqlplayer.net/adftools/


0 commentaires