IBM Cloud Docs
Risoluzione dei problemi per GitHub, GitLab e Git Repos and Issue Tracking

Risoluzione dei problemi per GitHub, GitLab e Git Repos and Issue Tracking

I problemi generali con l'utilizzo di GitHub, GitLab e Git Repos and Issue Tracking possono includere problemi di autenticazione GitHub o di configurazione dell'integrazione dello strumento. In molti casi, puoi risolvere questi problemi seguendo pochi semplici passi.

Ho provato ad aggiungere l'integrazione dello strumento GitHub alla mia toolchain, perché l'integrazione dello strumento non è stata aggiunta?

Devi eseguire l'autorizzazione presso GitHub in modo che IBM Cloud sia autorizzato ad accedere al tuo account GitHub.

L'integrazione dello strumento GitHub non è stata aggiunta alla tua toolchain. Se stai usando Terraform o l'API per creare l'integrazione dello strumento GitHub, il tentativo non riesce con il messaggio di errore User is not authorized with https://api.github.com.

Se IBM Cloud non è autorizzato ad accedere al tuo account GitHub, l'integrazione dello strumento non viene aggiunta alla tua toolchain.

Se si sta configurando l'integrazione dello strumento GitHub utilizzando la console durante la creazione della catena di strumenti, seguire questi passaggi per autorizzare GitHub::

  1. Nella sezione delle integrazioni configurabili, fai clic su GitHub.

  2. Se si sta creando la catena di strumenti su IBM Cloud Pubblico e IBM Cloud non è autorizzato ad accedere a GitHub, selezionare il metodo di autenticazione che verrà usato per accedere a Github.

    • Se scegli OAuth, fai clic su Authorize per andare sul sito Web GitHub. Se non disponi di una sessione GitHub attiva, ti viene richiesto di accedere. Fare clic su Autorizza IBM per consentire a IBM Cloud di accedere al proprio account GitHub.
    • Se scegli Personal Access Token, specifica un token di accesso personale valido per GitHub.

Se stai utilizzando la console e hai già una toolchain, aggiorna la configurazione dello strumento GitHub:

  1. Dalla console IBM Cloud, fare clic sull'icona Menu > Automazione piattaforma > Toolchains. Nella pagina Toolchains, fai clic sulla toolchain per aprirne la pagina di panoramica. In alternativa, nella pagina Panoramica dell'applicazione, sulla scheda Continuous delivery, fare clic su View toolchain > Overview.

  2. Nella pagina della panoramica della toolchain, sulla scheda Repository, individua l'integrazione dello strumento GitHub.

  3. Fai clic sul menù per accedere alle opzioni di configurazione e aggiornare le impostazioni di configurazione per autorizzare IBM Cloud ad accedere GitHub.

    • Se scegli OAuth, fai clic su Authorize per andare sul sito Web GitHub. Se non disponi di una sessione GitHub attiva, ti viene richiesto di accedere. Fare clic su Autorizza IBM per consentire a IBM Cloud di accedere al proprio account GitHub.
    • Se scegli Personal Access Token, fornisci un token di accesso personale valido per GitHub.
  4. Quando hai terminato di aggiornare le impostazioni, fai clic su Save Integration.

Se stai utilizzando Terraform o l'API con il metodo di autenticazione OAuth, passa all'utilizzo di un PAT (Personal Access Token) per fornire l'accesso granulare a uno specifico utente o repository. L'autorizzazione con un PAT è consigliata quando si utilizza Terraform o l'API. Altrimenti, puoi utilizzare la console per autorizzare IBM Cloud ad accedere al tuo account GitHub:

  1. Dalla console IBM Cloud, fare clic sull'icona Menu > Automazione piattaforma > Toolchains. Nella pagina Toolchains, individuare la catena di strumenti a cui si vuole aggiungere l'integrazione dello strumento GitHub. Fare clic sulla catena di strumenti per aprire la pagina di panoramica.
  2. Nella pagina Panoramica della catena degli strumenti, fare clic su Aggiungi.
  3. Nella pagina Aggiungi integrazione dello strumenti, fai clic sulla scheda dello strumenti GitHub.
  4. Nella pagina Configure GitHub, fai clic su Authorize per andare al sito Web GitHub. Se non disponi di una sessione GitHub attiva, ti viene richiesto di accedere. Fare clic su Autorizza IBM per consentire a IBM Cloud di accedere al proprio account GitHub. Si viene reindirizzati alla pagina Configura GitHub.
  5. Chiudi la pagina senza eseguire ulteriori azioni nella console e prova a creare nuovamente l'integrazione dello strumento GitHub con Terraform o con l'API.

Perché non posso utilizzare l'integrazione dello strumento Git Repos and Issue Tracking nella mia toolchain da una regione in una toolchain in una regione differente?

Non puoi utilizzare un'istanza di Git Repos and Issue Tracking in più regioni.

Quando provo ad aggiungere l'integrazione dello strumento Git Repos and Issue Tracking, ricevo il seguente messaggio di errore:

Repository URL is not valid. The repository must be on {local GitLab URL}.

Dove {local GitLab URL} è l'URL dell'integrazione dello strumento Git Repos and Issue Tracking nella regione dove si trova la toolchain.

Poiché Git Repos and Issue Tracking è strettamente integrato con il servizio Continuous Delivery nella regione in cui sono in esecuzione, non puoi utilizzare un'istanza di Git Repos and Issue Tracking in più regioni.

Invece di creare un'integrazione dello strumento Git Repos and Issue Tracking, crea un'integrazione GitLab generica e utilizza questa integrazione per puntare al repository Git Repos and Issue Tracking (repo) in una regione diversa.

  1. Dalla console IBM Cloud, fare clic sull'icona Menu > Automazione piattaforma > Toolchains. Nella pagina Toolchains, fai clic sulla toolchain a cui desideri aggiungere questa integrazione. In alternativa, nella pagina della panoramica dell'applicazione, nella scheda di fornitura continua, fai clic su View toolchain e su Overview.

  2. Fai clic su Add tool.

  3. Nella sezione Integrazioni strumento, fai clic su GitLab.

  4. Fai clic sul server GitLab server che vuoi utilizzare. Se il server GitLab in cui risiede il repository a cui desideri accedere non è visualizzato in questo elenco, aggiungi un server personalizzato:

    a. Fare clic su Server personalizzato.

    b. Immetti un nome per il server. Questo nome server sarà visualizzato nell'elenco dei server GitLab disponibili.

    c. Immetti l'URL root del server GitLab personalizzato.

    d. Immetti un token di accesso personale per il tuo server GitLab personalizzato. Se non hai un token di accesso personale, creane uno.

  5. Se hai un repository GitLab e desideri utilizzarlo, per il tipo di repository, fai clic su Existing e immetti l'URL.

  6. Se desideri utilizzare un nuovo repository GitLab, immetti un nome per il repository, digita l'URL per il repository che stai clonando o dividendo e seleziona il tipo di repository:

    a. Per creare un repository vuoto, fai clic su New.

    b. Per creare una copia di un repository GitLab, fai clic su Clone.

    c. Per biforcare un repository GitLab in modo che sia possibile fornire le modifiche attraverso le richieste di unione, fai clic su Fork.

  7. Se vuoi creare un repository pubblico sul server, deseleziona la casella di spunta Make this repository private.

  8. Se desideri utilizzare Problemi di GitLab per la traccia del problema, seleziona la casella di spunta Enable GitLab Issues.

  9. Se desideri tracciare la distribuzione delle modifiche del codice creando tag e commenti nei commit e le etichette e i commenti sui problemi a cui fanno riferimento i commit, seleziona la casella di spunta Track deployment of code changes. Per ulteriori informazioni, vedere Tracciamento della distribuzione del codice con le toolchain.

  10. Fai clic su Crea integrazione.

Per ulteriori informazioni sulla configurazione di un'integrazione dello strumento GitLab, vedi Configurazione di GitLab.

Perché non posso clonare il mio repository Git Repos and Issue Tracking su https?

Devi utilizzare un token di accesso personale o una chiave SSH per eseguire le operazioni Git.

Provi ad eseguire il push o la clonazione di un repository dalla riga di comando utilizzando https e non riesci ad eseguire l'autenticazione anche se hai immesso la password corretta.

Git Repos and Issue Tracking utilizza un meccanismo SSO (single sign-on) che non supporta l'autenticazione Git che utilizza un nome utente e una password sulla riga di comando.

Per eseguire operazioni Git come clonazione o push, devi utilizzare un token di accesso personale o una chiave SSH. Per ulteriori informazioni sulla creazione di un token di accesso personale o di una chiave SSH, vedi l'Esercitazione introduttiva.

Perché mi viene richiesto di eseguire l'autenticazione quando provo a clonare il mio repository Git Repos and Issue Tracking utilizzando SSH?

Ci potrebbero essere dei problemi con l'ubicazione o con le autorizzazioni per la tua chiave SSH privata oppure è possibile che la riga di comando Git non stia utilizzando la tua chiave SSH privata per eseguire l'autenticazione presso Git Repos and Issue Tracking.

Ho aggiunto la mia chiave pubblica SSH mediante l'interfaccia utente Git Repos and Issue Tracking. Quando provo a clonare un repository utilizzando SSH, mi vengono richiesti una password o un codice di sicurezza oppure viene visualizzato un messaggio di errore che indica che l'autenticazione non è riuscita.

Uno qualsiasi dei seguenti problemi SSH potrebbe richiederti di eseguire l'autenticazione o potrebbe visualizzare un messaggio di errore.

  • È possibile che la riga di comando Git non stia utilizzando la tua chiave SSH privata per eseguire l'autenticazione presso Git Repos and Issue Tracking.

  • La tua chiave SSH privata potrebbe non essere nell'ubicazione ~/.ssh/id_rsa predefinita.

  • La tua chiave SSH privata potrebbe non disporre delle autorizzazioni corrette (600).

Utilizza uno qualsiasi dei seguenti metodi per risolvere questo problema:

  • Se utilizzi l'ubicazione di chiave SSH privata predefinita, verifica le autorizzazioni per la cartella ~/.ssh/ e il file di chiave privata ~/.ssh/id_rsa. Se le autorizzazioni sono troppo ampie, per impostazione predefinita SSH non utilizza una chiave privata. Assicurati che le autorizzazioni per la cartella ~/.ssh/ siano impostate su 700 e che le autorizzazioni per la cartella ~/.ssh/id_rsa siano impostate su 600.

  • Se la tua chiave privata non si trova nell'ubicazione predefinita, utilizza il seguente comando per specificarla in una variabile di ambiente:

  GIT_SSH_COMMAND='ssh -i/path/to/private_key_file' git clone git@host:owner/repo.git
  • Per eseguire il debug di questo problema utilizzando le informazioni di connessione, aggiungi l'indicatore -v o -vvv alla variabile di ambiente GIT_SSH_COMMAND:
  GIT_SSH_COMMAND='ssh -vvv git clone git@host:owner/repo.git
  GIT_SSH_COMMAND='ssh -vvv -i/path/to/private_key_file' git clone git@host:owner/repo.git

Ho provato a recuperare le modifiche dal mio repository Git Repos and Issue Tracking ma sto ottenendo un errore 504 Gateway Time-out.

Il tuo repository è più grande di 1 GB. Il sistema di gestione controllo origine (SCM, source control management) Git non è progettato per memorizzare file binari di grandi dimensioni.

Quando provo a completare un'operazione sul repository Git Repos and Issue Tracking, ricevo un messaggio di errore:

git fetch error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out fatal: The remote end hung up unexpectedly

Hai un repository di grandi dimensioni che è più di 1 GB. Il repository potrebbe anche contenere dei file binari che richiedono più spazio dei file di testo che vengono memorizzati in un formato compresso.

Per risolvere il problema, puoi utilizzare uno dei seguenti metodi:

  • Riduci la dimensione del tuo repository Git Repos and Issue Tracking. Per ulteriori informazioni sulla riduzione delle dimensioni del repo, vedere Riduzione delle dimensioni del repository con Git.

  • Utilizza SSH per ignorare il timeout di clonazione predefinito di 180 secondi.

  • Se stai provando a clonare un repository, completa una clonazione superficiale (git clone --depth) per ridurre la quantità di dati trasferita troncando la cronologia di commit. Per ulteriori informazioni sul completamento di un clone superficiale, vedere il documento 'Git Documentazione di riferimento.

Ho provato ad aggiungere un utente al mio progetto GitLab via email ma non ha ricevuto l'invito. Come lo aggiungo al mio progetto?

L'invito potrebbe essere bloccato dall'email dell'utente.

Ho invitato un utente al mio progetto GitLab utilizzando il suo indirizzo email che è elencato in Git Repos and Issue Tracking ma non ha ricevuto l'email.

È possibile che i filtri contro la posta indesiderata (spam) non consentano all'email di essere ricevuta nella casella di posta in arrivo.

Per risolvere il problema, puoi utilizzare uno dei seguenti metodi:

  • Controlla la tua cartella di posta indesiderata della email per determinare se l'invito via email è stato contrassegnato come posta indesiderata (spam). Le email sono inviate da un indirizzo noreply@. Aggiorna i tuoi filtri contro la posta indesiderata per consentire le email da questo indirizzo.

  • Appura se i filtri contro la posta indesiderata aziendali fuori dal controllo dell'utente stanno bloccando l'email. Chiedi all'utente di accedere all'interfaccia utente Git Repos and Issue Tracking e di inviarti il suo ID utente. Puoi aggiungere l'utente al progetto GitLab utilizzando il suo ID utente.

Quando utilizzo Terraform per aggiornare la configurazione di un'integrazione dello strumento Git esistente, perché la configurazione non riesce?

La risorsa di integrazione dello strumento Git specifica un type di clone, fork o new e specifica un repository di destinazione esistente.

Quando utilizzi Terraform per aggiornare un'integrazione dello strumento Git, la configurazione non riesce con il messaggio di errore The nonempty repository _REPO-URL_ already exists. Either delete the repository or change the Repository Type to 'Existing', dove REPO-URL è l'URL del repository di destinazione.

Questo errore è spesso causato dalle azioni seguenti:

  • La tua risorsa Terraform di integrazione dello strumento Git specifica un type di clone, fork o new. Hai modificato il repo_url all'interno del blocco initialization della risorsa nell'URL di un repository esistente.
  • La tua risorsa Terraform di integrazione dello strumento Git specifica un type di clone, fork o new. Non è stato modificato il repo_url, ma sono stati modificati uno o più altri argomenti all'interno del blocco initialization della risorsa. In questa situazione, il repository esiste perché è stato creato quando la risorsa di integrazione dello strumento Git è stata precedentemente applicata da Terraform.

I tipi clone, fork e new indicano all'integrazione dello strumento Git di creare il repository di destinazione (repo_url) sulla premessa che questo repository non esiste. Se l'integrazione dello strumento trova il repository di destinazione, non riesce per progettazione.

Modificare type da clone, fork o new in clone_if_not_exists, fork_if_not_exists o new_if_not_exists. Questi tipi indicano all'integrazione dello strumento Git di creare il repository di destinazione se non esiste o di utilizzare il repository di destinazione così com' è se esiste.

Sebbene sia possibile utilizzare altri metodi per risolvere questo errore, tali metodi non sono consigliati poiché potrebbero perdere informazioni. Questi metodi potrebbero anche richiedere modifiche al tuo Terraform che non sono buone pratiche.

  • Modifica repo_url in un repository creato quando applichi nuovamente il tuo Terraform. La modifica di una risorsa Terraform dopo la creazione iniziale per evitare errori durante gli aggiornamenti successivi è un anti - pattern. Questo metodo lascia intatti anche i repository precedentemente creati, ma non più collegati alla toolchain.
  • Modifica type in existing e applica nuovamente il tuo Terraform. La modifica di una risorsa Terraform dopo la creazione iniziale per evitare errori durante gli aggiornamenti successivi è un anti - pattern.
  • Elimina manualmente il repository di destinazione e applica nuovamente il tuo Terraform. Le modifiche manuali tra operazioni Terraform altrimenti automatizzate non sono consigliate. Se elimini il repository, l'eliminazione non può essere annullata e può causare una perdita di dati permanente.