Sincronizzare un repository GitHub in Workflow Orchestration Manager

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Nota

Workflow Orchestration Manager è basato su Apache Airflow.

Questo articolo illustra come sincronizzare il repository GitHub in Azure Data Factory Workflow Orchestration Manager in due modi diversi:

  • Usando Abilita la sincronizzazione Git nell'interfaccia utente di Workflow Orchestration Manager.
  • Usando l'API REST.

Prerequisiti

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare. Creare o selezionare un'istanza di Data Factory esistente in un'area in cui è supportata l'anteprima di Workflow Orchestration Manager.
  • Repository GitHub: è necessario accedere a un repository GitHub.

Usare l'interfaccia utente di Workflow Orchestration Manager

Per sincronizzare il repository GitHub usando l'interfaccia utente di Workflow Orchestration Manager:

  1. Assicurarsi che il repository contenga le cartelle e i file necessari:

    • dags/: per Apache Airflow indirizzato grafici aciclici (dag) (obbligatorio).

    • Plug-in/: per l'integrazione di funzionalità esterne in Airflow.

      Screenshot che mostra la struttura delle cartelle Airflow in GitHub.

  2. Quando si crea un runtime di integrazione di Workflow Orchestration Manager, selezionare Abilita sincronizzazione Git nella finestra di dialogo di configurazione dell'ambiente Airflow.

    Screenshot che mostra la casella di controllo Abilita sincronizzazione Git nella finestra di dialogo di configurazione dell'ambiente Airflow visualizzata durante la creazione di un runtime di integrazione Airflow.

  3. Selezionare uno dei tipi di servizio Git supportati seguenti:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Screenshot che mostra l'elenco a discesa Selezione del tipo di servizio Git nella finestra di dialogo di installazione dell'ambiente visualizzata durante la creazione di un runtime di integrazione di Workflow Orchestration Manager.

  4. Selezionare un tipo di credenziale:

    • Nessuno (per un repository pubblico): quando si seleziona questa opzione, assicurarsi che la visibilità del repository sia pubblica. Compilare quindi i dettagli:

      • URL del repository Git (obbligatorio): URL clone per il repository GitHub desiderato.
      • Git Branch (obbligatorio): Current Branch, in cui si trova il repository Git desiderato.
    • Token di accesso personale Git: dopo aver selezionato questa opzione per un token di accesso personale (PAT), compilare i campi rimanenti in base al tipo di servizio Git selezionato:

      • Token di accesso personale di GitHub
      • Token di accesso personale ADO
      • Token di accesso personale GitLab
      • Token di accesso personale BitBucket

      Screenshot che mostra le opzioni delle credenziali PAT Git nella finestra di dialogo di configurazione dell'ambiente Airflow visualizzata durante la creazione di un runtime di integrazione di AWorkflow Orchestration Manager.

    • SPN (nome entità servizio): solo ADO supporta questo tipo di credenziale. Dopo aver selezionato questa opzione, compilare i campi rimanenti in base al tipo di servizio Git selezionato:

      • URL del repository Git (obbligatorio): URL clone nel repository Git da sincronizzare.
      • Ramo Git (obbligatorio): ramo nel repository da sincronizzare.
      • ID app dell'entità servizio (obbligatorio): ID app dell'entità servizio con accesso al repository ADO da sincronizzare.
      • Segreto dell'entità servizio (obbligatorio): segreto generato manualmente nell'entità servizio il cui valore viene usato per autenticare e accedere al repository ADO.
      • ID tenant dell'entità servizio (obbligatorio): ID tenant dell'entità servizio.

      Screenshot che mostra le opzioni delle credenziali SPN Git nella finestra di dialogo di configurazione dell'ambiente Airflow visualizzata durante la creazione di un runtime di integrazione di Workflow Orchestration Manager.

  5. Compilare il resto dei campi con le informazioni necessarie.

  6. Seleziona Crea.

Usare l'API REST

Per sincronizzare il repository GitHub usando l'API REST:

  • Metodo: PUT

  • URL: https://management.azure.com/subscriptions/<subscriptionid>/resourcegroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<datafactoryName>/integrationruntimes/<airflowEnvName>?api-version=2018-06-01

  • Parametri URI:

    Nome Tra Richiesto Type Descrizione
    ID sottoscrizione path Vero string Identificatore della sottoscrizione
    Nome gruppo di risorse path Vero string Nome del gruppo di risorse (modello Regex: ^[-\w\._\(\)]+$)
    dataFactoryName path Vero string Nome di Azure Data Factory (modello Regex: ^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path Vero string Nome dell'ambiente Workflow Orchestration Manager
    Versione api query Vero string La versione dell'API
  • Corpo della richiesta (configurazione airflow):Request body (Airflow configuration):

    Nome Tipo Descrizione
    name string Nome dell'ambiente Airflow
    proprietà Propertytype Proprietà di configurazione per l'ambiente
  • Tipo proprietà:

    Nome Tipo Descrizione
    Tipo string Tipo di risorsa (flusso di aria in questo scenario)
    typeProperties typeProperty Flusso d'aria
  • Proprietà Type:

    Nome Tipo Descrizione
    computeProperties computeProperty Configurazione del tipo di calcolo usato per l'ambiente
    airflowProperties airflowProperty Configurazione delle proprietà Airflow per l'ambiente
  • Proprietà di calcolo:

    Nome Tipo Descrizione
    posizione string Per impostazione predefinita, il percorso del runtime di integrazione Airflow è l'area data factory. Per creare un runtime di integrazione in un'area diversa, creare una nuova data factory nell'area richiesta.
    computeSize string Dimensioni del nodo di calcolo in cui si vuole eseguire l'ambiente Airflow. Gli esempi sono Grandi o Piccoli. Inizialmente vengono allocati tre nodi.
    ExtraNodes integer Ogni nodo aggiuntivo aggiunge altri tre ruoli di lavoro.
  • Proprietà Airflow:

    Nome Tipo Descrizione
    airflowVersion string Versione supportata di Apache Airflow. Ad esempio, 2.4.3.
    airflowRequirements Stringa di matrice<> Librerie Python da usare. Ad esempio, ["flask-bcrypy=0.7.1"]. Può essere un elenco delimitato da virgole.
    airflowEnvironmentVariables Oggetto (coppia chiave/valore) Variabili di ambiente da usare. Ad esempio, { "SAMPLE_ENV_NAME": "test" }.
    gitSyncProperties gitSyncProperty Proprietà di configurazione Git.
    enableAADIntegration boolean Consente a Microsoft Entra ID di accedere a Workflow Orchestration Manager.
    userName stringa o null Nome utente per l'autenticazione di base.
    password stringa o null Password per l'autenticazione di base.
  • Proprietà di sincronizzazione Git:

    Nome Tipo Descrizione
    gitServiceType string Servizio Git in cui si trova il repository desiderato. I valori sono GitHub, ADO, GitLab o BitBucket.
    gitCredentialType string Tipo di credenziale Git. I valori sono PAT (per token di accesso personale), SPN (supportato solo da ADO) e Nessuno.
    repo string Collegamento al repository.
    ramo string Ramo da usare nel repository.
    username string Nome utente gitHub.
    Credenziali string Valore del pat.
    tenantId string ID tenant dell'entità servizio (supportato solo da ADO).
  • Risposte:

    Nome Codice di stato Tipo Descrizione
    Accettata 200 Fabbrica OK
    Non autorizzata 401 Errore cloud Matrice con altri dettagli sugli errori

Esempi

Esaminare gli esempi seguenti.

Richiesta di esempio:

HTTP
PUT https://management.azure.com/subscriptions/222f1459-6ebd-4896-82ab-652d5f6883cf/resourcegroups/abnarain-rg/providers/Microsoft.DataFactory/factories/ambika-df/integrationruntimes/sample-2?api-version=2018-06-01

Corpo di esempio:

{
   "name": "sample-2",
   "properties": {
      "type": "Airflow",
      "typeProperties": {
         "computeProperties": {
            "location": "East US",
            "computeSize": "Large",
            "extraNodes": 0
         },
         "airflowProperties": {
            "airflowVersion": "2.4.3",
            "airflowEnvironmentVariables": {
               "AIRFLOW__TEST__TEST": "test"
            },
            "airflowRequirements": [
               "apache-airflow-providers-microsoft-azure"
            ],
            "enableAADIntegration": true,
            "userName": null,
            "password": null,
            "airflowEntityReferences": []
         }
      }
   }
}

Risposta campione:

Status code: 200 OK

Corpo della risposta:

{
   "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/your-rg/providers/Microsoft.DataFactory/factories/your-df/integrationruntimes/sample-2",
   "name": "sample-2",
   "type": "Microsoft.DataFactory/factories/integrationruntimes",
   "properties": {
      "type": "Airflow",
      "typeProperties": {
         "computeProperties": {
            "location": "East US",
            "computeSize": "Large",
            "extraNodes": 0
         },
         "airflowProperties": {
            "airflowVersion": "2.4.3",
            "pythonVersion": "3.8",
            "airflowEnvironmentVariables": {
               "AIRFLOW__TEST__TEST": "test"
            },
            "airflowWebUrl": "https://e57f7409041692.eastus.airflow.svc.datafactory.azure.com/login/",
            "airflowRequirements": [
               "apache-airflow-providers-microsoft-azure"
            ],
            "airflowEntityReferences": [],
            "packageProviderPath": "plugins",
            "enableAADIntegration": true,
            "enableTriggerers": false
         }
      },
      "state": "Initial"
   },
   "etag": "3402279e-0000-0100-0000-64ecb1cb0000"
}

Ecco alcuni esempi di payload dell'API:

  • Proprietà di sincronizzazione Git per GitHub con PAT:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Proprietà di sincronizzazione Git per ADO con PAT:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Proprietà di sincronizzazione Git per ADO con entità servizio:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "SPN",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": < service principal app id >,
            "credential": <service principal secret value>
            "tenantId": <service principal tenant id>
    }
    
  • Proprietà di sincronizzazione Git per un repository pubblico gitHub:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "None",
            "repo":  <repo url>,
            "branch": <repo branch to sync>
    }
    

Importare un pacchetto privato con la sincronizzazione Git

Questo processo facoltativo si applica solo quando si usano pacchetti privati.

Questo processo presuppone che il pacchetto privato sia stato sincronizzato automaticamente tramite la sincronizzazione Git. Aggiungere il pacchetto come requisito nell'interfaccia utente di Workflow Orchestration Manager insieme al prefisso /opt/airflow/git/\<repoName\>/del percorso , se ci si connette a un repository ADO. Usare /opt/airflow/git/\<repoName\>.git/ per tutti gli altri servizi Git.

Ad esempio, se il pacchetto privato si trova in /dags/test/private.whl un repository GitHub, è necessario aggiungere il requisito /opt/airflow/git/\<repoName\>.git/dags/test/private.whl nell'ambiente Workflow Orchestration Manager.

Screenshot che mostra la sezione Requisiti airflow nella finestra di dialogo di configurazione dell'ambiente Airflow visualizzata durante la creazione di un runtime di integrazione di Workflow Orchestration Manager.