DataWorks terintegrasi dengan Git untuk menyediakan model baru dalam pengembangan data. Fitur Sinkronisasi dan Penggabungan Kode menghubungkan platform DataWorks secara mulus ke repositori Git Anda. Saat Anda menyimpan atau menerbitkan kode, perubahan tersebut secara otomatis disinkronkan ke cabang Git tertentu. Anda juga dapat menggabungkan perubahan kode dari cabang Git kembali ke DataWorks.
Fitur ini hanya tersedia di DataWorks Edisi Perusahaan dan sedang dalam tahap pratinjau privat. Untuk menggunakan fitur ini, kirim tiket ke dukungan teknis agar ditambahkan ke daftar putih.
Ikhtisar
Integrasi DataWorks dengan Git mencakup dua alur kerja: mengelola kode dalam satu ruang kerja dan menggabungkan kode lintas ruang kerja.
Sinkronkan dari DataWorks ke Git: Saat Anda menyimpan atau menerbitkan kode di DataWorks, perubahan tersebut secara otomatis dikomit ke cabang yang dilindungi di repositori Git. Komit ini dilakukan oleh akun Git khusus dan Serverless Resource Group yang memiliki akses jaringan.
Gabungkan dari Git ke DataWorks: Gabungkan perubahan kode dari cabang utama atau cabang fitur repositori Git kembali ke DataWorks.
DataWorks secara otomatis membuat dan mengelola tiga cabang berikut di repositori Git Anda serta menggunakan aturan perlindungan cabang untuk mencegah perubahan manual:
dataworks_${region}_${projectId}_save: Sesuai dengan kode setelah operasi simpan di DataWorks.dataworks_${region}_${projectId}_release_dev: Sesuai dengan kode yang berhasil diterbitkan ke lingkungan pengembangan.dataworks_${region}_${projectId}_release_prod: Sesuai dengan kode yang berhasil diterbitkan ke lingkungan produksi.
Konfigurasi dan inisialisasi
Langkah 1: Siapkan sumber daya cloud dan jaringan
Tugas sinkronisasi kode dijalankan menggunakan Serverless Resource Group dan memerlukan akses jaringan ke repositori Git dan Object Storage Service (OSS).
Siapkan Serverless Resource Group dan konfigurasikan jaringan.
Siapkan Serverless Resource Group DataWorks dan bind ke ruang kerja target.
Pastikan resource group dapat mengakses port SSH server Git. Hanya port 22 yang didukung.
Repositori Git publik (misalnya, Apsara DevOps atau GitHub.com): Konfigurasikan Internet NAT Gateway dan Elastic IP Address (EIP) untuk Virtual Private Cloud (VPC) tempat resource group berada agar mendapatkan akses jaringan publik.
Repositori Git privat: Pastikan konektivitas jaringan antara VPC resource group dan server Git. Untuk detailnya, lihat VPC Peering Connection.
Siapkan sumber data OSS. Fitur sinkronisasi kode menggunakan OSS untuk penyimpanan sementara.
Buat OSS Bucket di wilayah yang sama dengan ruang kerja DataWorks.
Di halaman Data Sources ruang kerja DataWorks, buat sumber data OSS untuk bucket tersebut.
CatatanHanya sumber data yang menggunakan Access Key untuk otentikasi yang didukung. Pastikan kunci tersebut memiliki izin berikut:
oss:GetObject,oss:ListObjects,oss:PutObject, danoss:DeleteObject.
Langkah 2: Siapkan lingkungan Git
Di platform Git Anda, buat akun khusus, konfigurasikan kunci SSH, dan atur aturan perlindungan cabang.
Buat akun Git khusus dan hasilkan kunci SSH.
Di platform Git Anda, seperti Apsara DevOps atau GitLab, buat akun khusus untuk komit kode otomatis, misalnya
dataworks_pusher. Konfigurasikan email yang valid untuk akun ini.Hasilkan pasangan kunci SSH menggunakan algoritma RSA untuk akun ini. Jangan atur passphrase selama proses pembuatan.
Tujuan: Menghasilkan kunci publik dan kunci privat SSH untuk otentikasi.
Perintah:
# Ganti "your_user_email@example.com" dengan email akun yang Anda konfigurasikan pada langkah sebelumnya. ssh-keygen -t rsa -C "your_user_email@example.com" # Saat diminta memasukkan passphrase, tekan Enter untuk melewati. # Enter passphrase (empty for no passphrase): [Enter] # Enter same passphrase again: [Enter]Hasil: Setelah perintah berhasil dijalankan, file
id_rsa(kunci privat) danid_rsa.pub(kunci publik) dihasilkan di direktori~/.ssh/. Anda akan memerlukan isi file-file ini pada langkah selanjutnya.# Salin dan simpan isi kunci publik dan privat. Anda akan memerlukannya di langkah berikutnya. cat ~/.ssh/id_rsa.pub cat ~/.ssh/id_rsa
Tambahkan kunci publik ke platform Git.
Login ke platform Git Anda. Di halaman manajemen kunci SSH untuk akun
dataworks_pusher, tambahkan kunci publik yang dihasilkan pada langkah sebelumnya (isi fileid_rsa.pub).Buat repositori kode dan konfigurasikan aturan perlindungan cabang.
Buat repositori kode Git khusus untuk manajemen kode DataWorks, misalnya
DataWorks_code.Di repositori tersebut, atur aturan perlindungan cabang untuk memastikan cabang yang dikelola otomatis oleh DataWorks tidak dimodifikasi secara langsung. Operasi ini harus dilakukan oleh administrator repositori.
PentingAturan perlindungan cabang yang dikonfigurasi secara salah dapat menyebabkan modifikasi tak terduga pada cabang yang dikelola DataWorks, sehingga mengganggu sinkronisasi.
Pola nama cabang:
dataworks_*Diizinkan untuk push: Pilih anggota tertentu dan tambahkan akun
dataworks_pusher.Diizinkan untuk merge: Pilih No one.
Langkah 3: Konfigurasikan dan inisialisasi sinkronisasi kode
Hanya Administrator Tenant dan Administrator Ruang Kerja yang dapat mengonfigurasi sinkronisasi kode untuk suatu ruang kerja.
Hubungkan ruang kerja DataWorks ke repositori Git, lalu inisialisasi koneksi tersebut.

Buka halaman Workspaces di konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Temukan ruang kerja yang diinginkan dan pilih di kolom Actions.
(Opsional) Uji konektivitas. Sebelum menyelesaikan konfigurasi, Anda dapat membuat node Shell sementara di DataStudio dan menggunakan Serverless Resource Group yang telah disiapkan untuk memverifikasi konektivitas jaringan dan validitas kunci privat SSH.
Uji konektivitas jaringan: Jalankan perintah
telnet. Jika log menampilkan "Connected to ...", konektivitas berhasil. Anda kemudian dapat menghentikan tugas tersebut.# Ganti your_git_server_domain dengan nama domain atau alamat IP server Git Anda, misalnya codeup.aliyun.com untuk Apsara DevOps. telnet your_git_server_domain 22Untuk Apsara DevOps, jika konten berikut muncul di log, jaringan telah terhubung. Anda dapat menghentikan tugas tersebut. Jika tidak, Anda harus memeriksa konfigurasi jaringan Anda.

Uji validitas kunci SSH: Jalankan skrip berikut. Jika log menampilkan pesan sukses seperti "Welcome to ...", kunci privat telah dikonfigurasi dengan benar.
# Periksa apakah kunci privat SSH benar. Output yang diharapkan adalah "Welcome to xxx,..." # Skrip ini menulis isi kunci privat Anda ke file kunci SSH standar (~/.ssh/id_rsa) di lingkungan runtime sementara. # Lalu menguji koneksi ke server Git untuk memvalidasi kunci privat. # Encode isi kunci privat ke Base64. id_rsa_base64=$(cat <<'EOF' | base64 -w 0 # [Tempelkan seluruh isi kunci privat (file id_rsa) di sini.] -----BEGIN OPENSSH PRIVATE KEY----- ... -----END OPENSSH PRIVATE KEY----- EOF ) # Buat ulang file kunci SSH di lingkungan runtime. id_rsa=$(base64 -d <<< "$id_rsa_base64") mkdir ~/.ssh echo "$id_rsa" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub chmod 644 ~/.ssh/id_rsa.pub # Uji koneksi SSH. Ganti your_git_server_domain dengan alamat SSH Git Anda, misalnya codeup.aliyun.com. ssh -T git@your_git_server_domainKlik Run. Untuk Apsara DevOps, jika konten berikut muncul di log eksekusi, kunci privat untuk akun tersebut benar.

Di bilah navigasi kiri, klik
Code Management untuk membuka halaman konfigurasi Code Synchronization. Konfigurasikan parameter berikut:Catatan: Tab Pengaturan DataStudio hanya terlihat setelah Anda ditambahkan ke daftar putih.
Parameter
Deskripsi
Git Repository Address
Alamat SSH repositori kode Git target.
Private Key
Tempelkan seluruh isi kunci privat (file
id_rsa) yang dihasilkan pada Langkah 2.PentingIsi kunci privat harus mencakup
-----BEGIN OPENSSH PRIVATE KEY-----dan-----END OPENSSH PRIVATE KEY-----.DataWorks OSS Data Source
Pilih sumber data OSS yang telah disiapkan.
CatatanJika UI menampilkan prompt "The current resource group is not authorized to access the OSS data source. Go to authorize," klik Go to authorize.
OSS Storage Path
Tentukan path OSS untuk menyimpan metadata kode, misalnya
dataworks-workspace-code.DataWorks OSS Universal Resource Group
Pilih Serverless Resource Group yang telah Anda siapkan sebelumnya.
Setelah konfigurasi selesai, klik Enable Synchronization. Lalu, klik Initialization untuk menginisialisasi repositori kode Git. Sistem secara otomatis membuat cabang DataWorks yang diperlukan di repositori Git dan menyinkronkan kode dari ruang kerja saat ini. Proses ini mungkin memakan waktu beberapa menit. Selama proses berlangsung, Anda dapat mengklik tombol
di pojok kanan atas untuk melihat log inisialisasi.CatatanJika Anda menonaktifkan lalu mengaktifkan kembali sinkronisasi, Anda harus melakukan inisialisasi ulang. Pembersihan diperlukan sebelum inisialisasi ulang.
Setelah konfigurasi berlaku, DataWorks secara otomatis membuat dan mengelola tiga cabang berikut di repositori Git Anda. Jangan membuat atau memodifikasinya secara manual.
dataworks_${region}_${projectId}_save: Sesuai dengan kode dari operasi simpan di DataWorks.dataworks_${region}_${projectId}_release_dev: Sesuai dengan kode yang berhasil diterbitkan ke lingkungan pengembangan. Jika ruang kerja berada dalam mode simple, cabang dev tidak dibuat.dataworks_${region}_${projectId}_release_prod: Sesuai dengan kode yang berhasil diterbitkan ke lingkungan produksi.
Mulai saat ini, setiap operasi simpan dan terbitkan di DataWorks secara otomatis menyinkronkan perubahan kode dan konfigurasi yang sesuai ke cabang Git masing-masing.
Klik cabang simpan default untuk melihat kode node, alur kerja, folder, dan informasi lainnya yang tersimpan di ruang kerja saat ini.
Langkah 4: Verifikasi sinkronisasi kode
Buat node Shell baru di DataStudio dan beri nama
shell_test.Di editor kode, masukkan kode berikut dan klik tombol simpan di bilah alat.
echo 'Code push test.'Login ke Git, buka repositori target, dan pilih cabang simpan. Temukan folder shell_test. Anda akan melihat folder tersebut berisi tiga file:
shell_test.sh (file kode),shell_test.spec.json (file konfigurasi penjadwalan), dandataworks.properties (file variabel). Klikshell_test.shuntuk melihat node shell_test beserta isinya. Hal ini menunjukkan bahwa sinkronisasi berhasil.Untuk memverifikasi sinkronisasi kedua cabang lainnya, terbitkan node tersebut ke lingkungan yang sesuai. Untuk informasi lebih lanjut tentang penerbitan, lihat Publish tasks.
Kasus penggunaan dan fitur
Reverse merge
DataWorks tidak hanya mendukung sinkronisasi kode ke Git, tetapi juga menyediakan kemampuan reverse merge yang kuat. Anda dapat dengan mudah menggabungkan perubahan terbaru dari cabang Git jarak jauh kembali ke platform DataWorks.
Fitur ini kompatibel baik dengan cabang sinkronisasi utama maupun cabang fitur yang dibuat darinya. Developer dapat membuat cabang fitur dari cabang sinkronisasi utama untuk bekerja secara independen dalam pengembangan, pengujian, dan tinjauan kode. Mereka kemudian dapat menggabungkan kode yang telah matang kembali ke DataWorks dengan aman. Proses ini memungkinkan kolaborasi tim yang profesional dan efisien.
Fitur ini memerlukan sinkronisasi yang diaktifkan dan tersedia untuk peran dengan izin developer atau lebih tinggi.
Titik masuk penggabungan
Di antarmuka , perluas bagian Code Merge.
Pratinjau penggabungan
Setelah Anda memasukkan nama cabang yang ingin digabungkan dan mengklik Merge Preview, sistem membandingkan konten yang ditambahkan, dimodifikasi, dan dihapus antara cabang sumber dan cabang
savedefault DataWorks.Tidak ada konflik: Antarmuka menampilkan diff perubahan, yang secara jelas mencantumkan node dan modifikasi kode yang akan ditambahkan, dimodifikasi, atau dihapus.
Konflik: Antarmuka memberi peringatan konflik dan menampilkan detail spesifik. Anda harus kembali ke lingkungan lokal, menyelesaikan konflik di Git, lalu mencoba penggabungan lagi.



Konfirmasi penggabungan
Setelah memastikan pratinjau benar, klik Confirm Merge.
Sistem memulai tugas penggabungan. Anda dapat melihat progres penggabungan secara real-time.
Semua catatan penggabungan ditampilkan di area Code Merge History di bawah. Anda dapat melihat inisiator, status penggabungan, dan detail cabang untuk setiap catatan.

Cross-workspace merge
Fitur sinkronisasi Git memungkinkan Anda menggunakan kembali dan mendistribusikan seperangkat kode standar, atau "templat", di berbagai ruang kerja, bahkan di wilayah berbeda. Misalnya, Anda dapat dengan cepat menerapkan model analisis pengguna universal ke ruang kerja independen untuk berbagai lini bisnis, memungkinkan masing-masing menjalankannya di sumber daya komputasi dan sumber data khususnya sendiri.
Persiapan awal
Buat dua proyek terpisah:
git_cross_project_1dangit_cross_project_2. Keduanya dapat berada di wilayah berbeda.Ikuti petunjuk di Langkah 1 untuk mengonfigurasi resource group dan sumber data OSS untuk setiap ruang kerja. Kedua sumber data dapat sama. Konfigurasikan juga konektivitas jaringan.
Ikuti petunjuk di Langkah 2 untuk menyiapkan repositori kode Git tunggal yang akan dibagikan oleh kedua ruang kerja.
Ikuti petunjuk di Langkah 3 untuk mengonfigurasi sinkronisasi Git untuk setiap ruang kerja, menggunakan alamat SSH dan kunci privat yang sama untuk keduanya. Pastikan inisialisasi berhasil untuk keduanya. Pada titik ini, cabang untuk kedua ruang kerja,
270256(project1) dan270257(project2), akan muncul di repositori kode Git.
Strategi penggabungan lintas proyek
Saat menggabungkan cabang kode lintas ruang kerja, hanya kode node, properti dasar, dan konfigurasi penjadwalan yang digabungkan. Konfigurasi eksekusi tidak digabungkan ke ruang kerja target.
Karena kedua ruang kerja belum tentu memiliki konfigurasi yang sama untuk sumber daya komputasi, kelompok sumber daya, dan sumber data, Anda harus mengonfigurasi pemetaan sumber daya
merge_mapping.Di mesin lokal Anda, buka terminal, clone repositori, lalu alihkan ke cabang simpan ruang kerja sumber (project1), misalnya,
dataworks_cn_shenzhen_270256_save.# Clone repositori Git jarak jauh ke mesin lokal Anda. git clone git@your_git_server_domain:64dc86a16800a4a57137536/cross_project_shenzhen.git # Alihkan ke cabang simpan project1. git checkout <your_branch_name>Buat file
merge_mapping.# `cross_project_shenzhen` adalah nama repositori kode. cd cross_project_shenzhen # Buat direktori. mkdir -p DATAWORKS_SYSTEM_CONFIG/merge_mapping # Buat file pemetaan. Format nama file: <region>_<projectId>_to_<region>_<projectId>.properties vi DATAWORKS_SYSTEM_CONFIG/merge_mapping/cn_shenzhen_270256_to_cn_shenzhen_270257.propertiesKonfigurasikan isi file sesuai kebutuhan Anda, dan ubah nilai parameter di kedua sisi tanda
=. Anda dapat menentukan beberapa parameter untuk setiap jenis.# Sumber Data # spec.datasource.name.<project1_data_source_name>=<project2_data_source_name> spec.datasource.name.mysql_01=mysql_02 # Kelompok Sumber Daya # spec.runtimeResource.resourceGroup.<project1_resource_group_ID>=<project2_resource_group_ID> spec.runtimeResource.resourceGroup.group_524257424564736=Serverless_res_group_524257424564736_764027070300961 # Awalan nama output node # spec.output-prefix.<project1_name>=<project2_name> spec.output-prefix.git_cross_project_1=git_cross_project_2 # Awalan proyek untuk tabel di MaxCompute SQL # script.project-identifier.<project1_name>=<project2_name> script.project-identifier.git_cross_project_1=git_cross_project_2 # Gambar # 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 # Peran RAM # 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/aliyundataworksaccessingossroleDorong kode ke repositori Git.
# Tambahkan perubahan di direktori saat ini ke Git. git add . # Komit file pemetaan. git commit -m "add mapping files" # Dorong konten cabang ke repositori Git jarak jauh. git push
Gabungkan kode lintas proyek
Buka DataStudio di ruang kerja target
git_cross_project_2. Di panel navigasi kiri, klik DataStudio Settings, lalu temukan tab Code Merge.Di kotak input cabang, masukkan nama cabang simpan ruang kerja sumber, misalnya
dataworks_cn_shenzhen_270256_save.
Klik Merge Preview. Setelah memastikan perubahan benar, gabungkan kode dari ruang kerja
git_cross_project_1ke ruang kerjagit_cross_project_2. Untuk detail operasi penggabungan, lihat Reverse merge.
Penagihan
Fitur ini menimbulkan biaya untuk sumber daya berikut:
Serverless Resource Group: Tugas sinkronisasi menggunakan spesifikasi sumber daya 1 CU. Biaya bervariasi tergantung pada metode penagihan resource group yang dibeli. Untuk detailnya, lihat Billing of Serverless Resource Groups.
Internet NAT Gateway dan EIP: Jika repositori Git berada di internet publik, biaya trafik yang sesuai akan dikenakan. Untuk detailnya, lihat NAT Gateway billing.
Penyimpanan OSS: Digunakan untuk menyimpan data sinkronisasi kode. Ditagih berdasarkan kapasitas penyimpanan dan jumlah permintaan. Untuk detailnya, lihat OSS billing overview.
FAQ
T: Inisialisasi ditampilkan sebagai berhasil, tetapi tidak ada cabang yang dibuat di repositori Git. Apa yang harus saya lakukan?
J: Ikuti petunjuk di bagian Test connectivity untuk memeriksa apakah koneksi telnet dan SSH berhasil. Perhatikan dengan cermat apakah konfigurasi jaringan (Internet NAT Gateway/VPC) Serverless Resource Group sudah benar.
T: Terjadi konflik saat menggabungkan kode. Bagaimana cara menanganinya?
J: Di lingkungan pengembangan lokal Anda, ambil perubahan terbaru dari repositori jarak jauh. Gabungkan cabang simpan DataWorks (
dataworks_${region}_${projectId}_save) dengan cabang pengembangan Anda menggunakangit mergeataugit rebase. Setelah menyelesaikan konflik, dorong cabang pengembangan Anda ke repositori jarak jauh. Terakhir, kembali ke halaman DataWorks dan coba penggabungan lagi.