Share via


Sincronizar um repositório GitHub no Workflow Orchestration Manager

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Nota

O Workflow Orchestration Manager é alimentado pelo Apache Airflow.

Neste artigo, você aprenderá a sincronizar seu repositório GitHub no Azure Data Factory Workflow Orchestration Manager de duas maneiras diferentes:

  • Usando Enable git sync na interface do usuário do Workflow Orchestration Manager.
  • Usando a API Rest.

Pré-requisitos

Usar a interface do usuário do Workflow Orchestration Manager

Para sincronizar seu repositório GitHub usando a interface do usuário do Workflow Orchestration Manager:

  1. Certifique-se de que seu repositório contenha as pastas e arquivos necessários:

    • dags/: Para gráficos acíclicos direcionados (dags) do Apache Airflow (obrigatório).

    • Plugins/: Para integrar funcionalidades externas ao Airflow.

      Captura de tela que mostra a estrutura das pastas Airflow no GitHub.

  2. Ao criar um tempo de execução de integração do Workflow Orchestration Manager, selecione Ativar sincronização git na caixa de diálogo de configuração do ambiente Airflow.

    Captura de tela que mostra a caixa de seleção Ativar sincronização do git na caixa de diálogo de configuração do ambiente Airflow que aparece durante a criação de um tempo de execução de integração do Airflow.

  3. Selecione um dos seguintes tipos de serviço Git suportados:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Captura de tela que mostra a lista suspensa de seleção de tipo de serviço Git na caixa de diálogo de configuração do ambiente que aparece durante a criação de um tempo de execução de integração do Workflow Orchestration Manager.

  4. Selecione um tipo de credencial:

    • Nenhum (para um repositório público): Ao selecionar essa opção, verifique se a visibilidade do repositório é pública. Em seguida, preencha os detalhes:

      • Git repo url (obrigatório): A URL de clone para o repositório GitHub que você deseja.
      • Ramificação do Git (obrigatório): A ramificação atual, onde o repositório Git desejado está localizado.
    • Token de acesso pessoal do Git: Depois de selecionar esta opção para um token de acesso pessoal (PAT), preencha os campos restantes com base no tipo de serviço Git selecionado:

      • Token de acesso pessoal do GitHub
      • Token de acesso pessoal ADO
      • Token de acesso pessoal do GitLab
      • Token de acesso pessoal BitBucket

      Captura de tela que mostra as opções de credenciais PAT do Git na caixa de diálogo de configuração do ambiente Airflow que aparece durante a criação de um tempo de execução de integração do AWorkflow Orchestration Manager.

    • SPN (nome da entidade de serviço): Somente o ADO oferece suporte a esse tipo de credencial. Depois de selecionar essa opção, preencha os campos restantes com base no tipo de serviço Git selecionado:

      • URL de repositório do Git (obrigatório): A URL de clone para o repositório Git a ser sincronizada.
      • Ramificação do Git (obrigatório): A ramificação no repositório a ser sincronizada.
      • ID do aplicativo principal de serviço (obrigatório): o ID do aplicativo principal de serviço com acesso ao repositório ADO para sincronização.
      • Segredo da entidade de serviço (obrigatório): um segredo gerado manualmente na entidade de serviço cujo valor é usado para autenticar e acessar o repositório ADO.
      • ID do locatário da entidade de serviço (obrigatório): A ID do locatário da entidade de serviço.

      Captura de tela que mostra as opções de credenciais do Git SPN na caixa de diálogo de configuração do ambiente Airflow que aparece durante a criação de um tempo de execução de integração do Workflow Orchestration Manager.

  5. Preencha os restantes campos com as informações necessárias.

  6. Selecione Criar.

Utilizar a API REST

Para sincronizar seu repositório GitHub usando a API Rest:

  • Método: PUT

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

  • Parâmetros de URI:

    Nome Em Necessário Type Description
    ID da Subscrição path True string Identificador de subscrição
    Nome do ResourceGroup path True string Nome do grupo de recursos (padrão Regex: ^[-\w\._\(\)]+$)
    dataFactoryName path True string Nome do Azure Data Factory (padrão Regex: ^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    fluxo de arEnvName path True string Nome do ambiente do Workflow Orchestration Manager
    Api-versão query True string A versão da API
  • Corpo do pedido (configuração do fluxo de ar):

    Nome Tipo Description
    nome string Nome do ambiente de fluxo de ar
    propriedades Tipo de propriedade Propriedades de configuração para o ambiente
  • Tipo de propriedades:

    Nome Tipo Description
    Type string O tipo de recurso (Fluxo de ar neste cenário)
    typeProperties tipoPropriedade Airflow
  • Propriedade Type:

    Nome Tipo Description
    computeProperties computePropriedade Configuração do tipo de computação usado para o ambiente
    fluxo de arPropriedades fluxo de arPropriedade Configuração das propriedades de fluxo de ar para o ambiente
  • Propriedade de computação:

    Nome Tipo Description
    localização string O local de tempo de execução da integração do Airflow assume como padrão a região da fábrica de dados. Para criar um tempo de execução de integração em uma região diferente, crie uma nova fábrica de dados na região necessária.
    computeSize string O tamanho do nó de computação no qual você deseja que seu ambiente Airflow seja executado. Os exemplos são Grandes ou Pequenos. Três nós são alocados inicialmente.
    extraNós integer Cada nó extra adiciona mais três trabalhadores.
  • Propriedade do fluxo de ar:

    Nome Tipo Description
    fluxo de arVersão string Versão suportada Apache Airflow. Por exemplo, 2.4.3.
    fluxo de arRequisitos Cadeia de caracteres de matriz<> Bibliotecas Python que você deseja usar. Por exemplo, ["flask-bcrypy=0.7.1"]. Pode ser uma lista delimitada por vírgula.
    fluxo de arAmbienteVariáveis Objeto (par Chave/Valor) Variáveis de ambiente que você deseja usar. Por exemplo, { "SAMPLE_ENV_NAME": "test" }.
    gitSyncProperties gitSyncProperty Propriedades de configuração do Git.
    habilitaçãoAADIntegration boolean Permite que o Microsoft Entra ID inicie sessão no Workflow Orchestration Manager.
    nome de utilizador string ou null Nome de usuário para autenticação básica.
    password string ou null Senha para autenticação básica.
  • Propriedade de sincronização do Git:

    Nome Tipo Description
    gitServiceType string O serviço Git onde o repositório desejado está localizado. Os valores são GitHub, ADO, GitLab ou BitBucket.
    gitCredentialType string Tipo de credencial Git. Os valores são PAT (para token de acesso pessoal), SPN (suportado apenas pelo ADO) e Nenhum.
    repo string Link do repositório.
    sucursal string Ramificação a ser usada no repositório.
    nome de utilizador string Nome de usuário do GitHub.
    Credencial string Valor do PAT.
    tenantId cadeia A ID do locatário da entidade de serviço (suportada apenas pelo ADO).
  • Respostas:

    Nome Código de estado Tipo Description
    Aceite 200 Fábrica OK
    Não autorizado 401 Erro na nuvem Matriz com mais detalhes de erro

Exemplos

Analise os exemplos a seguir.

Sample request:

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 da amostra:

{
   "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": []
         }
      }
   }
}

Exemplo de resposta:

Status code: 200 OK

Corpo da resposta:

{
   "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"
}

Aqui estão alguns exemplos de carga útil da API:

  • Propriedades de sincronização do Git para o GitHub com PAT:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Propriedades de sincronização do Git para ADO com PAT:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Propriedades de sincronização do Git para ADO com entidade de serviço:

    "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>
    }
    
  • Propriedades de sincronização do Git para um repositório público do GitHub:

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

Importar um pacote privado com a sincronização do Git

Este processo opcional só se aplica quando utiliza pacotes privados.

Esse processo pressupõe que seu pacote privado foi sincronizado automaticamente via sincronização Git. Você adiciona o pacote como um requisito na interface do usuário do Workflow Orchestration Manager junto com o prefixo /opt/airflow/git/\<repoName\>/do caminho , se estiver se conectando a um repositório ADO. Use /opt/airflow/git/\<repoName\>.git/ para todos os outros serviços do Git.

Por exemplo, se seu pacote privado estiver em /dags/test/private.whl um repositório GitHub, você deverá adicionar o requisito /opt/airflow/git/\<repoName\>.git/dags/test/private.whl no ambiente do Workflow Orchestration Manager.

Captura de tela que mostra a seção Requisitos de fluxo de ar na caixa de diálogo de configuração do ambiente de fluxo de ar que aparece durante a criação de um tempo de execução de integração do Workflow Orchestration Manager.