La synchronisation et la fusion de code DataWorks connectent votre espace de travail à un dépôt Git. Chaque enregistrement ou déploiement valide automatiquement les modifications dans les branches Git désignées. Vous pouvez également fusionner les changements des branches Git vers DataWorks.
Cette fonctionnalité est disponible uniquement dans l'édition Enterprise de DataWorks.
Vue d'ensemble
L'intégration de DataWorks avec Git comprend deux flux de travail pour gérer le code au sein d'un espace de travail et fusionner le code entre différents espaces de travail :
Synchronisation de DataWorks vers Git : Lorsque vous enregistrez ou déployez du code dans DataWorks, les modifications sont automatiquement validées (commit) dans une branche protégée du dépôt Git. Un compte Git dédié et un groupe de ressources serverless disposant d'un accès réseau exécutent ce processus.
Fusion de Git vers DataWorks : Fusionnez les modifications de code depuis la branche principale ou une branche indépendante de votre dépôt Git vers DataWorks.
DataWorks crée et gère automatiquement les trois branches suivantes dans votre dépôt Git, en appliquant des règles de protection de branche pour empêcher les modifications manuelles :
dataworks_${region}_${projectId}_save: Correspond au code après une opération d'enregistrement dans DataWorks.dataworks_${region}_${projectId}_release_dev: Correspond au code déployé avec succès dans l'environnement de développement.dataworks_${region}_${projectId}_release_prod: Correspond au code déployé avec succès dans l'environnement de production.
Configuration et initialisation
Étape 1 : Préparer les ressources et le réseau
Les tâches de synchronisation de code s'exécutent sur un groupe de ressources serverless et nécessitent un accès réseau à votre dépôt Git et à OSS.
-
Préparez un groupe de ressources serverless et configurez le réseau.
Préparez un groupe de ressources serverless DataWorks et associez-le à l'espace de travail cible.
-
Assurez-vous que le groupe de ressources peut accéder au port SSH du serveur Git. Seul le port 22 est pris en charge.
Dépôt Git public (par exemple, Alibaba Cloud DevOps CodeUp ou GitHub.com) : Configurez une passerelle NAT Internet et une adresse IP élastique (EIP) pour le VPC du groupe de ressources afin d'activer l'accès au réseau public.
Dépôt Git privé : Assurez-vous que le groupe de ressources et le serveur Git peuvent communiquer via le réseau privé (VPC). Pour plus d'informations, consultez les solutions de connectivité réseau.
-
Préparez une source de données OSS. La fonctionnalité de synchronisation de code utilise OSS pour le stockage temporaire.
Créez un bucket OSS dans la même région que l'espace de travail DataWorks.
-
Sur la page Data Source Management de l'espace de travail DataWorks, créez une source de données OSS pointant vers le bucket.
RemarqueAssurez-vous que les identifiants d'accès utilisés par la source de données OSS disposent des autorisations suivantes :
oss:GetObject,oss:ListObjects,oss:PutObjectetoss:DeleteObject.
Étape 2 : Préparer l'environnement Git
Créez un compte dédié sur la plateforme Git, configurez les clés SSH et définissez les règles de protection des branches.
-
Créez un compte Git dédié et générez des clés SSH.
Créez un compte sur la plateforme Git (par exemple, Alibaba Cloud DevOps CodeUp ou GitLab) dédié aux validations automatiques de code (par exemple,
dataworks_pusher), et configurez une adresse e-mail valide.-
Générez une paire de clés SSH en mode algorithme RSA pour ce compte. Ne définissez pas de phrase secrète (passphrase) lors de la génération des clés.
Objectif : Générer la clé publique et la clé privée SSH pour l'authentification.
-
Commande :
# 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] -
Résultat : Après l'exécution de la commande, les fichiers
id_rsa(clé privée) etid_rsa.pub(clé publique) sont générés dans le répertoire~/.ssh/. Le contenu de ces deux fichiers sera utilisé dans les étapes suivantes.# 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
-
Ajoutez la clé publique sur la plateforme Git.
Connectez-vous à la plateforme Git et ajoutez la clé publique générée à l'étape précédente (le contenu du fichier
id_rsa.pub) sur la page de gestion des clés SSH du comptedataworks_pusher. -
Créez un dépôt de code et configurez les règles de protection des branches.
Créez un dépôt Git dédié à la gestion du code DataWorks, par exemple
DataWorks_code.-
Configurez des règles de protection des branches dans le dépôt pour empêcher les modifications directes des branches gérées automatiquement par DataWorks. Cette opération doit être effectuée par un administrateur du dépôt.
ImportantDes règles de protection de branche mal configurées peuvent entraîner la modification accidentelle des branches gérées automatiquement par DataWorks, ce qui rompt la cohérence de la synchronisation.
Motif de nom de branche :
dataworks_*Autorisé à pousser (Push) : Sélectionnez des membres spécifiés et ajoutez le compte
dataworks_pusher.Autorisé à fusionner (Merge) : Sélectionnez No one.
Étape 3 : Configurer et initialiser la synchronisation de code
Seuls les administrateurs de locataire et les administrateurs d'espace de travail peuvent configurer la synchronisation de code pour l'espace de travail actuel. Les autres rôles n'ont pas les permissions nécessaires pour ajouter ou modifier ces paramètres.
Établissez une connexion entre l'espace de travail DataWorks et le dépôt Git, puis lancez l'initialisation.
Accédez à la page Workspaces de la console DataWorks. Dans la barre de navigation supérieure, sélectionnez la région souhaitée. Localisez l'espace de travail concerné et choisissez dans la colonne Actions.
-
(Facultatif) Test de connectivité. Avant de configurer formellement les paramètres, créez un nœud Shell temporaire dans Data Studio et utilisez le groupe de ressources serverless préparé pour le débogage afin de vérifier la connectivité réseau et la validité de la clé privée SSH.
Testez la connectivité réseau : Exécutez la commande
telnet. Si le journal affiche « Connected to ... », le réseau est connecté. Une fois la connexion établie, arrêtez la tâche.# Replace with your Git server domain or IP, e.g., Codeup address: codeup.aliyun.com telnet your_git_server_domain 22Prenons Alibaba Cloud DevOps (CodeUp) comme exemple. Si le contenu suivant apparaît dans le journal, le réseau est connecté et vous pouvez arrêter la tâche. Sinon, vérifiez si la configuration réseau a réussi.
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 -
Dans le volet de navigation de gauche, cliquez sur
Code Management pour accéder à la page de configuration Code Synchronization. Configurez les paramètres suivants :Nom
Description
SSH Address
L'adresse SSH du dépôt Git cible.
Private key
Collez le contenu complet de la clé privée (fichier
id_rsa) généré à l'étape 2.ImportantLe contenu de la clé privée doit inclure
-----BEGIN OPENSSH PRIVATE KEY-----et-----END OPENSSH PRIVATE KEY-----.OSS Data Source
Sélectionnez la source de données OSS que vous avez préparée.
RemarqueSi un message indique que le groupe de ressources actuel n'est pas autorisé à accéder à la source de données OSS, cliquez sur le lien d'autorisation pour accorder les permissions requises.
OSS Path
Spécifiez un chemin OSS pour stocker les métadonnées du code. Exemple :
dataworks-workspace-code.General Resource Group
Sélectionnez le groupe de ressources serverless que vous avez préparé précédemment.
-
Une fois la configuration terminée, cliquez sur Start Synchronization. Après l'activation de la synchronisation, initialisez le dépôt Git. Cliquez sur Initialization. Le système crée automatiquement les branches requises par DataWorks dans le dépôt Git et synchronise le code de l'espace de travail actuel. Ce processus peut prendre plusieurs minutes. Pendant cette période, cliquez sur le bouton
en haut à droite pour afficher les journaux d'initialisation.RemarqueAprès avoir désactivé la synchronisation, réinitialisez la fonctionnalité pour la réactiver. Avant la réinitialisation, supprimez le contenu des fichiers dans OSS.
Une fois la configuration effective, DataWorks crée et gère automatiquement les trois branches suivantes dans votre dépôt Git. Ne les créez ni ne les modifiez manuellement :
dataworks_${region}_${projectId}_save: Correspond au code après une opération d'enregistrement dans DataWorks.dataworks_${region}_${projectId}_release_dev: Correspond au code déployé avec succès dans l'environnement de développement. Si l'espace de travail est en mode basique, la branche dev n'est pas générée.dataworks_${region}_${projectId}_release_prod: Correspond au code déployé avec succès dans l'environnement de production.
À partir de maintenant, chaque opération d'enregistrement et de déploiement dans DataWorks synchronise automatiquement les modifications de code et de configuration correspondantes vers la branche Git appropriée.
Cliquez sur la branche d'enregistrement par défaut pour afficher le code des nœuds enregistrés, les workflows, les répertoires et d'autres informations dans l'espace de travail actuel.
Étape 4 : Vérifier la synchronisation de code
Créez un nœud Shell pour le développement de données et nommez-le shell_test.
-
Saisissez le code suivant dans l'éditeur de code et cliquez sur le bouton Save dans la barre d'outils.
echo 'Code push test.' Connectez-vous à Git, accédez au dépôt cible, sélectionnez la branche d'enregistrement (save) et localisez le dossier shell_test. Vous constaterez que le dossier contient trois fichiers :
shell_test.sh (code file),shell_test.spec.json (scheduling configuration file)etdataworks.properties (variable file). Cliquez surshell_test.shpour afficher le nœud shell_test et son contenu de code, ce qui indique que la synchronisation a réussi.Pour vérifier l'état de synchronisation des deux autres branches, déployez les nœuds dans les environnements correspondants. Pour plus d'informations sur le déploiement des nœuds, consultez la rubrique Deploy nodes.
Scénarios et fonctionnalités
Fusion inverse
DataWorks permet de fusionner les dernières modifications d'une branche Git distante vers la plateforme.
Cette capacité fonctionne à la fois avec la branche de synchronisation principale et les branches de fonctionnalités créées à partir de celle-ci. Les développeurs peuvent travailler sur des branches indépendantes, effectuer des revues de code, puis intégrer le code testé dans DataWorks pour une collaboration d'équipe efficace.
Cette fonctionnalité nécessite que la synchronisation soit activée et est disponible pour les utilisateurs disposant du rôle Developer ou supérieur.
-
Point d'entrée de fusion
Dans , développez la section Code Merge.
-
Aperçu de la fusion
Dans la zone de saisie Branch, saisissez le nom de la branche à fusionner, par exemple feature_cn-shanghai_branch. Cliquez sur merge preview. Le système compare les ajouts, modifications et suppressions entre la branche source et la branche
saveDataWorks par défaut.Aucun conflit : L'interface affiche un diff des modifications, listant clairement les nœuds à ajouter, modifier ou supprimer ainsi que les détails des changements de code.
Conflits détectés : L'interface affiche les conflits ainsi que le contenu spécifique en conflit. Dans ce cas, retournez dans votre environnement local, résolvez les conflits manuellement dans Git, puis relancez la fusion.
-
Confirmer la fusion
Après avoir vérifié que l'aperçu est correct, cliquez sur Confirm merge.
Le système démarre la tâche de fusion et vous pouvez surveiller la progression de la fusion en temps réel.
Tous les historiques de fusion sont affichés dans la section historique de fusion de code ci-dessous. Vous pouvez consulter à tout moment le propriétaire, l'état de la fusion et les détails de la branche.
Fusion inter-espaces de travail
La synchronisation Git prend en charge le clonage de projets DataWorks entre différents espaces de travail et régions, vous permettant d'utiliser un ensemble de code standardisé comme modèle réutilisable dans divers scénarios métier. Par exemple, vous pouvez déployer un modèle d'analyse utilisateur commun dans des espaces de travail indépendants de différentes lignes métier, chacun s'exécutant sur ses propres ressources de calcul et sources de données.
-
Configuration initiale
Créez deux projets : git_cross_project_1 et git_cross_project_2. La création interrégion est prise en charge.
Suivez l'Étape 1 pour configurer le groupe de ressources et la source de données OSS dans chaque espace de travail. Les deux sources de données peuvent utiliser la même configuration. Configurez également la connectivité réseau.
Suivez l'Étape 2 pour préparer un seul dépôt Git en tant que dépôt de gestion de code partagé pour les deux espaces de travail.
Suivez l'Étape 3 pour configurer la synchronisation Git pour les deux espaces de travail (utilisez la même adresse SSH et la même clé privée pour les deux), et assurez-vous que l'initialisation réussit. À ce stade, les branches des deux espaces de travail, 270256 (project1) et 270257 (project2), apparaissent dans le dépôt Git.
-
Politique de fusion inter-projets
Lors de la fusion de branches de code entre projets, seuls le code des nœuds, les propriétés de base et les configurations de planification sont fusionnés. Les configurations d'exécution ne sont pas fusionnées dans l'espace de travail cible.
-
Étant donné que les ressources de calcul, les groupes de ressources et les sources de données utilisés par les deux espaces de travail peuvent différer, configurez un fichier de mappage de ressources
merge_mapping.-
Ouvrez le terminal sur votre ordinateur local, clonez la branche d'enregistrement (save) de l'espace de travail source sur votre machine locale, et basculez vers la branche d'enregistrement du projet1 de l'espace de travail source, par exemple
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> -
Créez le fichier de mappage 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>.propertiesConfigurez le contenu du fichier en fonction de votre configuration réelle. Modifiez les valeurs réelles de part et d'autre de
=. Plusieurs valeurs sont prises en charge pour chaque type.# 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/aliyundataworksaccessingossrolePoussez le code vers le dépôt 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
-
-
Fusionnez le code entre les projets
Accédez à DataStudio de l'espace de travail cible git_cross_project_2. Cliquez sur Code Management dans le volet de navigation de gauche, et localisez l'onglet Code Merge.
Dans la zone de saisie de branche, saisissez le nom de la branche d'enregistrement (save) de l'espace de travail source, par exemple
dataworks_cn_shenzhen_270256_save.Cliquez sur merge preview. Après avoir confirmé que l'aperçu est correct, fusionnez le code de l'espace de travail git_cross_project_1 vers l'espace de travail git_cross_project_2. Pour plus de détails sur l'opération de fusion, consultez la section Fusion de Git vers DataWorks.
Facturation
Les ressources facturables incluent :
Groupe de ressources serverless : Les tâches de synchronisation utilisent une spécification de ressource de 1 CU. Les frais varient selon la méthode de facturation du groupe de ressources acheté. Pour plus d'informations, consultez la rubrique Facturation des groupes de ressources serverless.
Passerelle NAT Internet et EIP : Si votre dépôt Git se trouve sur le réseau public, des frais de trafic correspondants sont facturés. Pour plus d'informations, consultez la rubrique Facturation de la passerelle NAT.
Stockage OSS : Utilisé pour stocker les données de synchronisation de code. Les frais sont facturés en fonction de la capacité de stockage et du nombre de requêtes. Pour plus d'informations, consultez la rubrique Aperçu de la facturation OSS.
FAQ
-
Q : L'initialisation indique un succès, mais aucune branche n'est créée dans le dépôt Git. Que faire ?
R : Suivez la section Test de connectivité pour vérifier si les connexions telnet et SSH réussissent. Concentrez-vous sur la vérification de la configuration réseau (passerelle NAT/VPC) du groupe de ressources serverless.
-
Q : Un conflit est signalé lors de la fusion de code. Comment le résoudre ?
R : Dans votre environnement de développement local, récupérez (pull) la branche d'enregistrement DataWorks (dataworks_${region}_${projectId}_save) sur votre machine locale. Fusionnez-la avec votre branche de développement (en utilisant git merge ou git rebase) et résolvez les conflits. Ensuite, poussez votre branche de développement vers le dépôt distant, et retournez sur la page DataWorks pour relancer la fusion.