A sincronização e mesclagem de código do DataWorks conecta seu workspace a um repositório git. Cada salvamento ou implantação confirma automaticamente as alterações nos branches git designados, e você pode mesclar alterações de branches git de volta no DataWorks.
Este recurso está disponível apenas no DataWorks Enterprise Edition.
Visão geral
A integração entre DataWorks e git inclui dois fluxos de trabalho para gerenciar código dentro de um workspace e mesclar código entre workspaces:
Sincronizar do DataWorks para o git: Ao salvar ou implantar código no DataWorks, as alterações são confirmadas automaticamente em um branch protegido no repositório git. Uma conta git dedicada e um grupo de recursos serverless com acesso à rede executam esse processo.
Mesclar do git para o DataWorks: Mescle alterações de código do branch principal ou de um branch independente do seu repositório git de volta no DataWorks.
O DataWorks cria e gerencia automaticamente os três branches a seguir no seu repositório git, utilizando regras de branch protegido para evitar alterações manuais:
dataworks_${region}_${projectId}_save: Corresponde ao código após uma operação de salvamento no DataWorks.dataworks_${region}_${projectId}_release_dev: Corresponde ao código implantado com sucesso no ambiente de desenvolvimento.dataworks_${region}_${projectId}_release_prod: Corresponde ao código implantado com sucesso no ambiente de produção.
Configuração e inicialização
Etapa 1: Preparar recursos e rede
As tarefas de sincronização de código são executadas em um grupo de recursos serverless e exigem acesso à rede do seu repositório git e do OSS.
-
Prepare um grupo de recursos serverless e configure a rede.
Prepare um grupo de recursos serverless do DataWorks e associe-o ao workspace de destino.
-
Garanta que o grupo de recursos possa acessar a porta SSH do servidor git. Apenas a porta 22 é suportada.
Repositório git público (por exemplo, Alibaba Cloud DevOps CodeUp ou GitHub.com): Configure um NAT Gateway de Internet e um EIP para a VPC do grupo de recursos a fim de habilitar o acesso à rede pública.
Repositório git privado: Garanta que o grupo de recursos e o servidor git possam se comunicar pela rede privada (VPC). Para mais informações, consulte Soluções de conectividade de rede.
-
Prepare uma fonte de dados OSS. O recurso de sincronização de código utiliza o OSS para armazenamento temporário.
Crie um bucket do OSS na mesma região do workspace do DataWorks.
-
Na página Data Source Management do workspace do DataWorks, crie uma fonte de dados OSS que aponte para o bucket.
NotaCertifique-se de que as credenciais de acesso usadas pela fonte de dados OSS tenham as seguintes permissões:
oss:GetObject,oss:ListObjects,oss:PutObjecteoss:DeleteObject.
Etapa 2: Preparar o ambiente git
Crie uma conta dedicada na plataforma git, configure chaves SSH e defina regras de proteção de branch.
-
Crie uma conta git dedicada e gere chaves SSH.
Crie uma conta na plataforma git (por exemplo, Alibaba Cloud DevOps CodeUp ou GitLab) dedicada a confirmações automáticas de código (por exemplo,
dataworks_pusher) e configure um endereço de e-mail válido.-
Gere um par de chaves SSH no modo de algoritmo RSA para a conta. Não defina uma senha durante o processo de geração da chave.
Finalidade: Gerar a chave pública e a chave privada SSH para autenticação.
-
Comando:
# Replace "your_user_email@example.com" with the account email configured in the previous step ssh-keygen -t rsa -C "your_user_email@example.com" # When prompted for a passphrase, press Enter to skip # Enter passphrase (empty for no passphrase): [Enter] # Enter same passphrase again: [Enter] -
Resultado: Após a execução do comando, os arquivos
id_rsa(chave privada) eid_rsa.pub(chave pública) são gerados no diretório~/.ssh/. O conteúdo desses dois arquivos será utilizado nas etapas subsequentes.# Copy and save the public and private key contents, which will be needed in later steps cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa
-
Adicione a chave pública na plataforma git.
Faça login na plataforma git e adicione a chave pública gerada na etapa anterior (o conteúdo do arquivo
id_rsa.pub) na página de gerenciamento de chaves SSH da contadataworks_pusher. -
Crie um repositório de código e configure regras de proteção de branch.
Crie um repositório git dedicado ao gerenciamento de código do DataWorks, por exemplo,
DataWorks_code.-
Configure regras de proteção de branch no repositório para evitar modificações diretas nos branches gerenciados automaticamente pelo DataWorks. Um administrador do repositório deve realizar essa operação.
ImportanteRegras de proteção de branch configuradas incorretamente podem causar alterações acidentais nos branches gerenciados automaticamente pelo DataWorks, o que pode quebrar a consistência da sincronização.
Padrão de nome de branch:
dataworks_*Permitido enviar (push): Selecione membros especificados e adicione a conta
dataworks_pusher.Permitido mesclar: Selecione No one.
Etapa 3: Configurar e inicializar a sincronização de código
Apenas administradores de tenant e administradores de workspace podem configurar a sincronização de código para o workspace atual. Outras funções não têm permissão para adicionar ou modificar essas configurações.
Estabeleça uma conexão entre o workspace do DataWorks e o repositório git e inicie a inicialização.
Acesse a página Workspaces no console do DataWorks. Na barra de navegação superior, selecione a região desejada. Localize o workspace desejado e escolha na coluna Actions.
-
(Opcional) Teste de conectividade. Antes de configurar formalmente as definições, crie um nó Shell temporário no Data Studio e use o grupo de recursos serverless preparado para depuração, a fim de verificar a conectividade de rede e a validade da chave privada SSH.
Teste a conectividade de rede: Execute o comando
telnet. Se o log exibir "Connected to ...", a rede estará conectada. Após confirmar a conexão, interrompa a tarefa.# Replace with your Git server domain or IP, e.g., Codeup address: codeup.aliyun.com telnet your_git_server_domain 22Tomando o Alibaba Cloud DevOps (CodeUp) como exemplo, se o conteúdo a seguir aparecer no log, a rede estará conectada e você poderá parar a tarefa. Caso contrário, verifique se a configuração de rede foi concluída com sucesso.|
2025-11-03 19: 09:28 INF0 ALISA_TASK_PRI0RITY=0: 2025-11-03 19:09:28 INF0 --- Invoking Shell command line now --2025-11-03 19:09:28 INF0 Trying 118..50... Connected to codeup-aliyun.com. Escape character is '^]'. SSH-2.0-G0 -
No painel de navegação à esquerda, clique em
Code Management para acessar a página de configuração de Code Synchronization. Configure os seguintes parâmetros:Nome
Descrição
SSH Address
O endereço SSH do repositório git de destino.
Private key
Cole o conteúdo completo da chave privada (arquivo
id_rsa) gerada na Etapa 2.ImportanteO conteúdo da chave privada deve incluir
-----BEGIN OPENSSH PRIVATE KEY-----e-----END OPENSSH PRIVATE KEY-----.OSS Data Source
Selecione a fonte de dados OSS preparada.
NotaSe aparecer uma mensagem informando que o grupo de recursos atual não está autorizado a acessar a fonte de dados OSS, clique no link de autorização para conceder as permissões necessárias.
OSS Path
Especifique um caminho do OSS para armazenar metadados de código. Exemplo:
dataworks-workspace-code.General Resource Group
Selecione o grupo de recursos serverless preparado anteriormente.
-
Após concluir a configuração, clique em Start Synchronization. Depois de ativar a sincronização, inicialize o repositório git. Clique em Initialization. O sistema cria automaticamente os branches necessários pelo DataWorks no repositório git e sincroniza o código do workspace atual. Esse processo pode levar vários minutos. Durante esse período, clique no botão
no canto superior direito para visualizar os logs de inicialização.NotaAo desativar a sincronização, reinicialize o recurso para ativá-lo novamente. Antes de reinicializar, limpe o conteúdo dos arquivos no OSS.
Depois que a configuração entrar em vigor, o DataWorks criará e gerenciará automaticamente os três branches a seguir no seu repositório git. Não os crie ou modifique manualmente:
dataworks_${region}_${projectId}_save: Corresponde ao código após uma operação de salvamento no DataWorks.dataworks_${region}_${projectId}_release_dev: Corresponde ao código implantado com sucesso no ambiente de desenvolvimento. Se o workspace estiver no modo básico, o branch dev não será gerado.dataworks_${region}_${projectId}_release_prod: Corresponde ao código implantado com sucesso no ambiente de produção.
A partir desse momento, cada operação de salvamento e implantação no DataWorks sincroniza automaticamente o código correspondente e as alterações de configuração para o branch relevante no git.
Clique no branch de salvamento padrão para visualizar o código dos nós salvos, fluxos de trabalho, diretórios e outras informações do workspace atual.
Etapa 4: Verificar a sincronização de código
Crie um nó Shell para desenvolvimento de dados e nomeie-o shell_test.
-
Insira o código a seguir no editor de código e clique em Save na barra de ferramentas.
echo 'Code push test.' Faça login no git, acesse o repositório de destino, selecione o branch de salvamento e localize a pasta shell_test. A pasta contém três arquivos:
shell_test.sh (code file),shell_test.spec.json (scheduling configuration file)edataworks.properties (variable file). Clique emshell_test.shpara visualizar o nó shell_test e seu conteúdo de código, o que indica que a sincronização foi bem-sucedida.Para verificar o status de sincronização dos outros dois branches, implante nós nos ambientes correspondentes. Para mais informações sobre como implantar nós, consulte Implantar nós.
Cenários e recursos
Mesclagem reversa
O DataWorks suporta a mesclagem das alterações mais recentes de um branch git remoto de volta para a plataforma.
Essa capacidade funciona tanto com o branch principal de sincronização quanto com branches de recursos criados a partir dele. Os desenvolvedores podem trabalhar em branches independentes, realizar revisões de código e depois integrar o código testado de volta ao DataWorks para uma colaboração eficiente em equipe.
Este recurso exige que a sincronização esteja ativada e está disponível para usuários com a função Developer ou superior.
-
Entrada de mesclagem
Em , expanda a seção Code Merge.
-
Visualização da mesclagem
Na caixa de entrada Branch, insira o nome do branch a ser mesclado, como feature_cn-shanghai_branch. Clique em merge preview. O sistema compara as adições, modificações e exclusões entre o source branch e o branch padrão
savedo DataWorks.Sem conflitos: A interface exibe um diff das alterações, listando claramente os nós a serem adicionados, modificados ou excluídos, juntamente com os detalhes das alterações de código.
Conflitos detectados: A interface exibe os conflitos juntamente com o conteúdo específico em conflito. Nesse caso, retorne ao seu ambiente local, resolva os conflitos manualmente no git e inicie a mesclagem novamente.
-
Confirmar mesclagem
Após verificar que a visualização está correta, clique em Confirm merge.
O sistema inicia a tarefa de mesclagem, e você pode monitorar o progresso em tempo real.
Todos os registros históricos de mesclagem são exibidos na seção de histórico de mesclagem de código abaixo. Consulte o proprietário, o status da mesclagem e os detalhes do branch a qualquer momento.
Mesclagem entre workspaces
A sincronização git suporta clonagem entre workspaces e entre regiões de projetos do DataWorks, permitindo que você use um conjunto de códigos padronizado como modelo reutilizável em diferentes cenários de negócios. Por exemplo, implante um modelo comum de análise de usuários em workspaces independentes de diferentes linhas de negócios, cada um executando em seus próprios recursos de computação e fontes de dados.
-
Configuração de inicialização
Crie dois projetos: git_cross_project_1 e git_cross_project_2. A criação entre regiões é suportada.
Siga a Etapa 1 para configurar o grupo de recursos e a fonte de dados OSS em cada workspace. As duas fontes de dados podem usar a mesma configuração. Configure também a conectividade de rede.
Siga a Etapa 2 para preparar um repositório git como o repositório de gerenciamento de código compartilhado para ambos os workspaces.
Siga a Etapa 3 para configurar a sincronização git para ambos os workspaces (use o mesmo endereço SSH e chave privada para ambos) e certifique-se de que a inicialização seja bem-sucedida. Neste ponto, os branches de ambos os workspaces, 270256 (project1) e 270257 (project2), aparecem no repositório git.
-
Política de mesclagem entre projetos
Ao mesclar branches de código entre projetos, apenas o código do nó, propriedades básicas e configurações de agendamento são mesclados. As configurações de tempo de execução não são mescladas no workspace de destino.
-
Como os recursos de computação, grupos de recursos e fontes de dados usados pelos dois workspaces podem diferir, configure um arquivo de mapeamento de recursos
merge_mapping.-
Abra o terminal no seu computador local, clone o branch de salvamento do workspace de origem para sua máquina local e alterne para o branch de salvamento do project1 do workspace de origem, como
dataworks_cn_shenzhen_270256_save.# Clone the remote Git repository to your local machine git clone git@your_git_server_domain:64dc86a16800a4a57137536/cross_project_shenzhen.git # Switch to the save branch of project1 git checkout <your branch name> -
Crie o arquivo de mapeamento merge_mapping.
# cross_project_shenzhen is the repository name cd cross_project_shenzhen # Create the directory mkdir -p DATAWORKS_SYSTEM_CONFIG/merge_mapping # Create the mapping file, e.g., cn_shenzhen_270256_to_cn_shenzhen_270257.properties vi DATAWORKS_SYSTEM_CONFIG/merge_mapping/<region>_<projectId>_to_<region>_<projectId>.propertiesConfigure o conteúdo do arquivo com base na sua configuração real. Modifique os valores reais em ambos os lados de
=. Vários valores são suportados para cada tipo.# Data source # spec.datasource.name.<project1 data source name>=<project2 data source name> spec.datasource.name.mysql_01=mysql_02 # Resource group # spec.runtimeResource.resourceGroup.<project1 resource group ID>=<project2 resource group ID> spec.runtimeResource.resourceGroup.group_524257424564736=Serverless_res_group_524257424564736_764027070300961 # Node output name prefix # spec.output-prefix.<project1 name>=<project2 name> spec.output-prefix.git_cross_project_1=git_cross_project_2 # Project prefix for tables in MaxCompute SQL # script.project-identifier.<project1 name>=<project2 name> script.project-identifier.git_cross_project_1=git_cross_project_2 # Image # spec.script.runtime.container.imageId.<image ID used in project1>=<image ID used in project2> spec.script.runtime.container.imageId.Default=System_python311_ubuntu2204_20251201 # RAM role # spec.script.runtime.linkedRoleArn.<RAM role ARN used in project1>=<RAM role ARN used in project2> spec.script.runtime.linkedRoleArn.acs:ram::1107550004253538:role/aliyundataworksaccessingenirole=acs:ram::1107550004253538:role/aliyundataworksaccessingossroleEnvie o código para o repositório git.
# Stage current directory changes in git git add . # Commit the mapping file git commit -m "add mapping files" # Push the branch content to the remote Git repository git push
-
-
Mesclar código entre projetos
Acesse o DataStudio do workspace de destino git_cross_project_2. Clique em Code Management no painel de navegação à esquerda e localize a aba Code Merge.
Na caixa de entrada de branch, insira o nome do branch de salvamento do workspace de origem, como
dataworks_cn_shenzhen_270256_save.Clique em merge preview. Após confirmar que a visualização está correta, mescle o código do workspace git_cross_project_1 no workspace git_cross_project_2. Para detalhes sobre a operação de mesclagem, consulte Mesclar do git para o DataWorks.
Faturamento
Os recursos faturáveis incluem:
Grupo de recursos serverless: As tarefas de sincronização usam uma especificação de recurso de 1 CU. As taxas variam dependendo do método de faturamento do grupo de recursos adquirido. Para mais informações, consulte Faturamento de grupo de recursos serverless.
NAT Gateway de Internet e EIP: Se o seu repositório git estiver na rede pública, serão incorridas taxas de tráfego correspondentes. Para mais informações, consulte Faturamento de NAT Gateway.
Armazenamento OSS: Usado para armazenar dados de sincronização de código. As taxas são cobradas com base na capacidade de armazenamento e no número de solicitações. Para mais informações, consulte Visão geral do faturamento do OSS.
Perguntas frequentes
-
P: A inicialização mostra sucesso, mas nenhum branch é criado no repositório git. O que devo fazer?
R: Siga a seção Teste de conectividade para verificar se as conexões telnet e SSH foram bem-sucedidas. Concentre-se em verificar se a configuração de rede (NAT Gateway/VPC) do grupo de recursos serverless está correta.
-
P: Um conflito é relatado quando mesclo código. Como resolvo?
R: No seu ambiente de desenvolvimento local, faça o pull do branch de salvamento do DataWorks (dataworks_${region}_${projectId}_save) para sua máquina. Mescle-o com seu branch de desenvolvimento (usando git merge ou git rebase) e resolva os conflitos. Em seguida, envie seu branch de desenvolvimento para o repositório remoto e retorne à página do DataWorks para iniciar a mesclagem novamente.