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
Esse recurso está em uma versão prévia. O Gerenciador de Orquestração de Fluxo de trabalho é desenvolvido com 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
- Assinatura do Azure: Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar. Crie ou selecione uma instância existente de Data Factory em uma região em que a versão prévia do Gerenciador de Orquestração de Fluxos de Trabalho tem suporte.
- Repositório do GitHub: Você precisa ter acesso a um repositório GitHub.
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:
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.
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.
Selecione um dos seguintes tipos de serviço Git com suporte:
- GitHub
- ADO
- GitLab
- BitBucket
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
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.
Preencha o restante dos campos com as informações necessárias.
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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.