Migrazione a Secure Source Manager

Questa guida descrive come eseguire la migrazione di un repository Git, incluse tutte le relative informazioni, da Cloud Source Repositories (CSR) di Google a Secure Source Manager (SSM). Questa migrazione utilizza i comandi Git standard per clonare e inviare i dati del repository.

Prerequisiti

Prima di iniziare la migrazione, assicurati di soddisfare i seguenti prerequisiti:

  • Autorizzazioni: l'utente o i service account devono disporre delle seguenti autorizzazioni per eseguire la migrazione:
    • source.repos.get, disponibile nel ruolo roles/source.reader nel repository CSR di origine
    • securesourcemanager.instances.access, disponibile nel ruolo roles/securesourcemanager.instanceAccessor, e securesourcemanager.repositories.fetch, disponibile nel ruolo roles/securesourcemanager.repoWriter, nell'istanza e nel repository SSM di destinazione. Se stai creando nuovi repository, vedi Creare un repository.
  • Client Git: è necessario un computer con lo strumento a riga di comando Git installato.
  • Google Cloud SDK: per l'autenticazione quando utilizzi HTTPS, devi installare la versione 395.0.0 o successive sullo stesso computer in cui hai installato lo strumento Git. Se non hai Google Cloud SDK, devi connetterti sia a CSR che a SSM utilizzando le chiavi SSH.
  • Istanza SSM: assicurati di poter accedere all'istanza SSM dal tuo computer. Se la tua istanza è configurata utilizzando Private Service Connect, consulta Accedere a un'istanza privata per i dettagli di accesso.
  • Spazio di archiviazione locale: devi disporre di spazio su disco locale sufficiente per archiviare temporaneamente i cloni dei repository che stai migrando.

Passi per la migrazione

Il processo di migrazione prevede la clonazione dell'intero repository da CSR al tuo computer locale e il push del clone nel repository SSM.

Determina l'entità e il metodo di accesso per i repository CSR e SSM

Puoi connetterti a CSR utilizzando i trasporti HTTP o SSH quando esegui l'autenticazione come entità utente oppure tramite HTTP quando esegui l'autenticazione come account di servizio. Puoi connetterti ed eseguire l'autenticazione con SSM utilizzando i trasporti HTTP o SSH, come utente o account di servizio.

Non è necessario utilizzare lo stesso trasporto o lo stesso principale in CSR e SSM. Determina il principale e il trasporto che utilizzerai per ogni piattaforma. Per saperne di più sulla simulazione dell'identità dei service account, consulta Simulazione dell'identità dei service account.

Assicurati che il repository CSR sia di sola lettura

Questa guida alla migrazione non utilizza il mirroring o la sincronizzazione automatici. Pertanto, assicurati che nessuno scriva nel repository CSR durante o dopo la migrazione. Aggiorna le autorizzazioni IAM in modo che nessun utente abbia un ruolo diverso da roles/source.reader nel repository. In alternativa, coordina con i tuoi utenti l'interruzione di tutti i commit durante la migrazione.

Crea repository Secure Source Manager

Puoi saltare questo passaggio se un amministratore ha già creato il repository per te.

Per creare un repository vuoto nell'istanza SSM, segui la guida per creare un nuovo repository. Verifica quanto segue:

  • Se utilizzi la UI, non selezionare Inizializza repository, perché viene creato un repository non vuoto.
  • Se utilizzi Google Cloud CLI, non impostare i flag --gitignores, --readme e --licenses, perché viene creato un repository non vuoto.
  • Se utilizzi l'API, non impostare i campi gitignores, license e readme di InitialConfig, perché in questo modo viene creato un repository non vuoto.

Convalida le impostazioni del repository SSM

Verifica che il repository sia vuoto controllando l'interfaccia utente o clonando il repository ed eseguendo git show-ref. L'output è vuoto se il repository è vuoto.

Assicurati che non siano presenti regole di protezione dei rami attive controllando l'interfaccia utente o utilizzando l'API. Non devono essere presenti regole oppure tutte le regole devono essere disattivate per impedire il blocco della migrazione.

Assicurati che lo spazio su disco locale e remoto sia sufficiente

Prima di clonare il repository CSR, individua la sua dimensione totale. Esegui gcloud source repos describe <var>CSR_REPO_NAME</var>. Questo comando mostra il numero totale di byte nel repository. Per valutare lo spazio su disco disponibile su un sistema Linux, esegui df . per visualizzare il numero di byte disponibili nella directory corrente.

SSM ha un limite predefinito di 100 GB di spazio di archiviazione per istanza. Verifica che il repository CSR sia adatto prima di clonarlo.

Clona il repository CSR

Clona la cronologia completa del repository da CSR al tuo computer locale.

  1. Vai alla directory locale in cui vuoi archiviare temporaneamente il repository.
  2. Clona il repository: sh git clone <var>CSR_REPO_URL</var> --mirror

Questo comando crea un clone bare, ottimizzato per il push dell'intero contenuto del repository in un altro repository remoto. Noterai che la directory contiene solo file come config e HEAD, anziché i contenuti del repository. Questo è il comportamento previsto: tutti i contenuti del repository sono stati clonati e sono presenti nella directory objects e in altre, ma non esiste una copia di lavoro.

Aggiungi il repository Secure Source Manager come nuovo repository remoto

Esegui questo comando:

git remote add ssm <var>SSM_REPOSITORY_URL</var>

Esegui il push dell'intero repository in Secure Source Manager

Esegui il push di tutti i rami, i tag e i riferimenti dal clone locale al repository remoto SSM:

git push --mirror ssm

Convalida

Al termine dell'operazione di push, clona il repository SSM in una directory diversa. Quindi, confronta le copie CSR e SSM del repository:

  • Numero di rami: esegui git branch -r in ogni repository e verifica che il numero di rami sia lo stesso. Sui sistemi Linux o macOS, il piping del comando a wc -l conta le righe di output.
  • Numero di tag: esegui git tag in ogni repository e verifica che il numero di tag sia lo stesso. Sui sistemi Linux o macOS, il piping del comando a wc -l conta le righe di output.
  • Commit HEAD: esegui git rev-parse HEAD in ogni repository e verifica che l'hash del commit sia uguale.
  • Conteggio commit: esegui git rev-list --all --count in ogni repository e verifica che il numero di commit sia lo stesso.

Esegui la pulizia

  • Se hai eseguito l'impersonificazione di un account di servizio durante la migrazione, esegui gcloud config set account per reimpostare le credenziali.
  • Se hai disattivato le regole di protezione dei rami, riattiva le regole di protezione dei rami nel repository SSM.
  • Rimuovi le copie non protette del repository CSR dal computer che hai utilizzato per la migrazione.
  • Elimina il repository CSR originale.

Passaggi successivi