Share via


Sincronizar um repositório GitHub no Gerenciador de Orquestração de Fluxos de Trabalho

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Observação

O Gerenciador de Orquestração de Fluxos de Trabalho é da plataforma Apache Airflow.

Neste artigo, você aprenderá a sincronizar o repositório GitHub no Gerenciador de Orquestração de Fluxos de Trabalho do Azure Data Factory de duas maneiras diferentes:

  • Usando Habilitar a sincronização do Git na interface do usuário do Gerenciador de Orquestração de Fluxos de Trabalho.
  • Usando a API Rest.

Pré-requisitos

Use a interface do usuário do Gerenciador de Orquestração de Fluxos de Trabalho

Para sincronizar seu repositório GitHub usando a interface do usuário do Gerenciador de Orquestração de Fluxos de Trabalho:

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

    • dags/: para grafos direcionados acíclicos (dags) do Apache Airflow (obrigatório).

    • Plugins/: Para integrar recursos externos ao Airflow.

      Captura de tela mostrando a estrutura de pastas do Airflow no GitHub.

  2. Quando você criar um runtime de integração do Gerenciador de Orquestração de Fluxos de Trabalho, selecione Habilitar sincronização do Git na caixa de diálogo Configuração do ambiente Airflow.

    Captura de tela mostrando a caixa de seleção Habilitar sincronização do Git na caixa de diálogo de configuração do ambiente do Airflow que aparece durante a criação de um runtime de integração do Airflow.

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

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Captura de tela mostrando o menu suspenso de seleção do tipo de serviço Git na caixa de diálogo de configuração do ambiente que aparece durante a criação de um runtime de integração do Gerenciador de Orquestração de Fluxos de Trabalho.

  4. Selecione um tipo de credencial:

    • Nenhum (para um repositório público): Quando você selecionar esta opção, certifique-se de que a visibilidade do seu repositório seja pública. Em seguida, preencha os detalhes:

      • URL do repositório Git (obrigatório): A URL de clonagem para o repositório GitHub desejado.
      • Git branch (obrigatório): A ramificação atual, em que está localizado o repositório Git que você deseja.
    • Token de Acesso Pessoal 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:

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

      Captura de tela mostrando as opções de credenciais do Git PAT na caixa de diálogo de configuração do ambiente do Airflow que aparece durante a criação de um runtime de integração do Gerenciador de Orquestração de Fluxos de Trabalho.

    • SPN (nome da entidade de serviço): Apenas o ADO dá suporte para este tipo de credencial. Depois de selecionar essa opção, preencha os campos restantes com base no tipo de serviço Git selecionado:

      • URL do repositório Git (obrigatório): A URL de clonagem para o repositório Git a ser sincronizado.
      • Git branch (obrigatório): A ramificação no repositório a ser sincronizado.
      • ID do aplicativo da entidade de serviço (obrigatório): A ID do aplicativo da entidade 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 do 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 mostrando as opções de credenciais do Git SPN na caixa de diálogo de configuração do ambiente do Airflow que aparece durante a criação de um runtime de integração do Gerenciador de Orquestração de Fluxos de Trabalho.

  5. Preencha o restante dos campos com as informações necessárias.

  6. Selecione Criar.

Usar a API REST

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

  • Método: PUT

  • 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 Obrigatório Type Descrição
    ID da assinatura path True string Identificador de assinatura
    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]+)*$
    airflowEnvName path True string Nome do ambiente do Gerenciador de Orquestração de Fluxos de Trabalho
    Api-version Consulta True string A versão API
  • Corpo da solicitação (configuração do Airflow):

    Nome Tipo Descrição
    name string Nome do ambiente do Airflow
    properties propertyType Propriedades de configuração do ambiente
  • Tipos de propriedades:

    Nome Tipo Descrição
    Type string O tipo de recurso (Airflow nesse cenário)
    typeProperties typeProperty Fluxo de ar
  • Tipo de propriedade:

    Nome Tipo Descrição
    computeProperties computeProperty Configuração do tipo de computação usado para o ambiente
    airflowProperties airflowProperty Configuração das propriedades do Airflow para o ambiente
  • Propriedade de computação:

    Nome Tipo Descrição
    local string O local de runtime da integração do Airflow tem como padrão a região do data factory. Para criar um runtime de integração em uma região diferente, crie um novo data factory na região necessária.
    computeSize string O tamanho do nó de computação no qual você deseja que seu ambiente do Airflow seja executado. Os exemplos são Grandes ou Pequenos. Três nós são alocados inicialmente.
    extraNodes Número inteiro Cada nó extra adiciona mais três trabalhos.
  • Propriedade do Airflow:

    Nome Tipo Descrição
    airflowVersion string Versão com suporte pelo Apache Airflow. Por exemplo, 2.4.3.
    airflowRequirements Array<string> Bibliotecas Python que você deseja usar. Por exemplo, ["flask-bcrypy=0.7.1"]. Pode ser uma lista delimitada por vírgulas.
    airflowEnvironmentVariables Objeto (par chave/valor) As variáveis de ambiente que você deseja usar. Por exemplo, { "SAMPLE_ENV_NAME": "test" }.
    gitSyncProperties gitSyncProperty Propriedades de configuração do Git.
    enableAADIntegration boolean Permite que o Microsoft Entra ID faça logon no Gerenciador de Orquestração de Fluxos de Trabalho.
    userName cadeia de caracteres ou nulo Nome de usuário para autenticação básica.
    password cadeia de caracteres ou nulo Senha para autenticação básica.
  • Propriedade de sincronização do Git:

    Nome Tipo Descrição
    gitServiceType string O serviço Git no qual o repositório desejado está localizado. Os valores são GitHub, ADO, GitLab ou BitBucket.
    gitCredentialType string Tipo de credencial do Git. Os valores são PAT (para token de acesso pessoal), SPN (com suporte apenas pelo ADO) e Nenhum.
    repositório string Link do repositório.
    branch string Branch a ser usado no repositório.
    Nome de Usuário string Nome de usuário do GitHub.
    Credencial string Valor do PAT.
    tenantId string A ID do locatário da entidade de serviço (com suporte apenas pelo ADO).
  • Respostas:

    Nome Código de status Tipo Descrição
    Aceito 200 Factory OK
    Não Autorizado 401 Erro na nuvem Matriz com mais detalhes do erro

Exemplos

Analise os exemplos a seguir.

Solicitação de exemplo:

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 conteúdo de API:

  • Propriedades de sincronização do Git para 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 a 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

Esse processo opcional só se aplica quando você usa pacotes privados.

Esse processo pressupõe que seu pacote privado foi sincronizado automaticamente por meio da sincronização do Git. Adicione o pacote como um requisito na interface do usuário do Gerenciador de Orquestração de Fluxos de Trabalho junto com o prefixo do caminho /opt/airflow/git/\<repoName\>/, se estiver se conectando a um repositório ADO. Use /opt/airflow/git/\<repoName\>.git/ para todos os outros serviços Git.

Por exemplo, se o seu pacote privado está /dags/test/private.whl em um repositório do GitHub, você deve adicionar a exigência /opt/airflow/git/\<repoName\>.git/dags/test/private.whl no ambiente do Gerenciador de Orquestração de Workflows.

Captura de tela mostrando a seção de Requisitos do Airflow na caixa de diálogo de configuração do ambiente do Airflow que aparece durante a criação de um runtime de integração do Gerenciador de Orquestração de Fluxos de Trabalho.