Panduan ini menjelaskan cara memigrasikan repositori Git, termasuk semua informasinya, dari Cloud Source Repositories (CSR) Google ke Secure Source Manager (SSM). Migrasi ini menggunakan perintah Git standar untuk meng-clone dan mengirimkan data repositori.
Prasyarat
Sebelum memulai migrasi, pastikan Anda memenuhi prasyarat berikut:
- Izin: Pengguna atau akun layanan harus memiliki izin berikut untuk melakukan migrasi:
source.repos.get, yang tersedia dalam peranroles/source.readerdi repositori CSR sumbersecuresourcemanager.instances.access, yang tersedia dalam peranroles/securesourcemanager.instanceAccessor, dansecuresourcemanager.repositories.fetch, yang tersedia dalam peranroles/securesourcemanager.repoWriter, di instance dan repositori SSM target. Jika Anda membuat repositori baru, lihat Membuat repositori.
- Klien Git: Anda memerlukan komputer dengan alat command line Git yang terinstal.
- Google Cloud SDK: Untuk melakukan autentikasi saat menggunakan HTTPS, Anda harus menginstal versi 395.0.0 atau yang lebih baru di komputer yang sama tempat Anda menginstal alat Git. Jika Anda tidak memiliki Google Cloud SDK, Anda harus terhubung ke CSR dan SSM menggunakan kunci SSH.
- Instance SSM: Pastikan Anda dapat mengakses instance SSM dari komputer Anda. Jika instance Anda dikonfigurasi menggunakan Private Service Connect, lihat Mengakses instance pribadi untuk mengetahui detail akses.
- Penyimpanan Lokal: Anda memerlukan ruang disk lokal yang cukup untuk menyimpan sementara klon repositori yang Anda migrasikan.
Langkah-Langkah Migrasi
Proses migrasi melibatkan pengkloningan seluruh repositori dari CSR ke komputer lokal Anda, lalu mengirimkan clone ke repositori SSM.
Menentukan metode dan prinsipal akses untuk CSR, repositori SSM
Anda dapat terhubung ke CSR menggunakan transport HTTP atau SSH saat Anda mengautentikasi sebagai akun utama pengguna, atau melalui HTTP saat Anda mengautentikasi sebagai akun layanan. Anda dapat terhubung dan melakukan autentikasi dengan SSM menggunakan transport HTTP atau SSH, sebagai akun utama pengguna atau akun layanan.
Anda tidak perlu menggunakan transport atau prinsipal yang sama di seluruh CSR dan SSM. Tentukan prinsipal dan transportasi yang akan Anda gunakan untuk setiap platform. Untuk mengetahui informasi selengkapnya tentang peniruan identitas akun layanan, lihat Peniruan identitas akun layanan.
Memastikan Repositori CSR bersifat Hanya Baca
Panduan migrasi ini tidak menggunakan pencerminan atau sinkronisasi otomatis.
Oleh karena itu, pastikan tidak ada yang menulis ke repositori CSR selama atau setelah migrasi. Perbarui izin IAM sehingga tidak ada pengguna yang memiliki peran selain roles/source.reader di repositori. Atau, berkoordinasilah dengan pengguna Anda untuk menghentikan semua commit selama migrasi.
Membuat Repositori Secure Source Manager
Anda dapat melewati langkah ini jika administrator sudah membuat repositori untuk Anda.
Untuk membuat repositori kosong di instance SSM, ikuti panduan untuk membuat repositori baru. Pastikan bahwa:
- Jika menggunakan UI, jangan pilih Initialize Repository, karena tindakan ini akan membuat repositori yang tidak kosong.
- Jika menggunakan Google Cloud CLI, jangan tetapkan flag
--gitignores,--readme, dan--licenses, karena tindakan ini akan membuat repositori yang tidak kosong. - Jika menggunakan API, jangan tetapkan kolom
gitignores,license, danreadmedariInitialConfig, karena tindakan ini akan membuat repositori yang tidak kosong.
Memvalidasi Setelan Repositori SSM
Pastikan repositori kosong dengan memeriksa UI atau dengan meng-clone repositori dan menjalankan git show-ref. Output kosong jika repositori kosong.
Pastikan tidak ada aturan perlindungan cabang yang aktif dengan memeriksa UI atau menggunakan API. Tidak boleh ada aturan, atau semua aturan harus dinonaktifkan untuk mencegah pemblokiran migrasi.
Memastikan ruang disk lokal dan jarak jauh
Sebelum meng-clone repositori CSR, temukan total ukurannya. Jalankan
gcloud source repos describe <var>CSR_REPO_NAME</var>. Perintah ini menampilkan
jumlah total byte dalam repositori. Untuk menilai ruang disk yang tersedia di sistem Linux, jalankan df . untuk melihat jumlah byte yang tersedia di direktori saat ini.
SSM memiliki batas default sebesar 100 GB penyimpanan per instance. Verifikasi bahwa repositori CSR akan sesuai sebelum Anda meng-clone-nya.
Meng-clone Repositori CSR
Buat clone histori repositori lengkap dari CSR ke komputer lokal Anda.
- Buka direktori lokal tempat Anda ingin menyimpan repositori untuk sementara.
- Buat clone repositori:
sh git clone <var>CSR_REPO_URL</var> --mirror
Perintah ini membuat clone kosong, yang dioptimalkan untuk mengirim seluruh
konten repositori ke remote lain. Anda akan melihat bahwa direktori hanya
berisi file seperti config dan HEAD, bukan konten repositori Anda.
Hal ini wajar; semua konten repositori telah di-clone dan ada di direktori objects dan lainnya, tetapi tidak ada salinan kerja.
Menambahkan Repositori Secure Source Manager sebagai Remote Baru
Jalankan perintah berikut:
git remote add ssm <var>SSM_REPOSITORY_URL</var>
Mengirim Repositori Lengkap ke Secure Source Manager
Kirim semua cabang, tag, dan referensi dari clone lokal ke SSM jarak jauh:
git push --mirror ssm
Validasi
Setelah operasi push selesai, clone repositori SSM ke direktori lain. Kemudian, bandingkan salinan CSR dan SSM dari repositori:
- Jumlah cabang: Jalankan
git branch -rdi setiap repositori dan verifikasi bahwa jumlah cabang sama. Pada sistem Linux atau macOS, menyalurkan perintah kewc -lmenghitung baris output. - Jumlah tag: Jalankan
git tagdi setiap repositori dan pastikan jumlah tag sama. Di sistem Linux atau macOS, menyalurkan perintah kewc -lakan menghitung baris output. - HEAD commit: Jalankan
git rev-parse HEADdi setiap repositori, dan verifikasi bahwa hash commit sama. - Jumlah commit: Jalankan
git rev-list --all --countdi setiap repositori, dan verifikasi bahwa jumlah commit sama.
Pembersihan
- Jika Anda meniru identitas akun layanan selama migrasi, jalankan
gcloud config set accountuntuk mereset kredensial Anda. - Jika Anda menonaktifkan aturan perlindungan cabang, aktifkan kembali Branch Protection Rules di repositori SSM.
- Hapus salinan kosong repositori CSR dari komputer yang Anda gunakan untuk migrasi.
- Hapus repositori CSR asli.