IBM Cloud Docs
Resolução de problemas para GitHub, GitLab e Git Repos and Issue Tracking

Resolução de problemas para GitHub, GitLab e Git Repos and Issue Tracking

Os problemas gerais com o uso do GitHub, do GitLab e do Git Repos and Issue Tracking podem incluir autenticação do GitHub ou problemas de configuração de integração de ferramenta. Em muitos casos, é possível recuperar-se desses problemas seguindo algumas etapas simples.

Eu tentei incluir a integração de ferramenta GitHub em minha cadeia de ferramentas, por que a

integração de ferramenta não estava incluída?

Deve-se obter autorização com o GitHub para que o IBM Cloud seja autorizado a acessar sua conta do GitHub.

A integração de ferramenta do GitHub não foi incluída em sua cadeia de ferramentas. Se você estiver usando Terraform ou a API para criar a integração da ferramenta GitHub, a tentativa falha com a mensagem de erro User is not authorized with https://api.github.com.

Se o IBM Cloud não estiver autorizado a acessar sua conta do GitHub, a integração de ferramenta não será incluída em sua cadeia de ferramentas.

Se você estiver configurando a integração da ferramenta GitHub usando o console enquanto cria a cadeia de ferramentas, siga estas etapas para autorizar com o GitHub:

  1. Na seção Integrações configuráveis, clique em GitHub.

  2. Se você estiver criando a cadeia de ferramentas em IBM Cloud Public e IBM Cloud não estiver autorizado a acessar GitHub, selecione o método de autenticação que será usado para acessar o Github.

    • Se você escolher OAuth, clique em Autorizar para acessar o website GitHub. Se você não tiver uma sessão do GitHub ativa, será solicitado a efetuar login. Clique em Authorize IBM para permitir que IBM Cloud acesse sua conta GitHub.
    • Se você escolher Personal Access Token, especifique um token de acesso pessoal válido para GitHub.

Se você estiver usando o console e já tiver uma cadeia de ferramentas, atualize a configuração da integração da ferramenta GitHub:

  1. No console IBM Cloud, clique no ícone de hambúrguer Menu > Automação da plataforma > Cadeias de ferramentas. Na página Cadeias de ferramentas, clique na cadeia de ferramentas para abrir a sua página de Visão geral. Como alternativa, na página Visão geral do aplicativo, no cartão de entrega contínua, clique em Exibir cadeia de ferramentas > Visão geral.

  2. Na página de visão geral da cadeia de ferramentas, na placa Repositórios, localize a integração de ferramenta GitHub.

  3. Clique no menu para acessar as opções de configuração e atualizar as definições de configuração para autorizar o IBM Cloud a acessar o GitHub.

    • Se você escolher OAuth, clique em Autorizar para acessar o website GitHub. Se você não tiver uma sessão do GitHub ativa, será solicitado a efetuar login. Clique em Authorize IBM para permitir que IBM Cloud acesse sua conta GitHub.
    • Se você escolher Personal Access Token, forneça um token de acesso pessoal válido para GitHub.
  4. Quando tiver finalizado a atualização das configurações, clique em Salvar integração.

Se você estiver usando Terraform ou a API com o método de autenticação OAuth, mude para usar um Token de Acesso Pessoal (PAT) para fornecer acesso granular a um usuário ou repo específico. Autorizar com um PAT é recomendado quando você usa Terraform ou a API. Caso contrário, você pode usar o console para autorizar IBM Cloud para acessar a sua conta GitHub:

  1. No console IBM Cloud, clique no ícone de hambúrguer Menu > Automação da plataforma > Cadeias de ferramentas. Na página Toolchains (Cadeias de ferramentas), localize a cadeia de ferramentas à qual você deseja adicionar a integração da ferramenta GitHub. Clique na cadeia de ferramentas para abrir a página Overview (Visão geral).
  2. Na página Visão geral da cadeia de ferramentas, clique em Adicionar.
  3. Na página Adicionar integração de ferramentas, clique no cartão de ferramentas GitHub.
  4. Na página Configurar GitHub, clique em Autorizar para ir até o website GitHub. Se você não tiver uma sessão do GitHub ativa, será solicitado a efetuar login. Clique em Authorize IBM para permitir que IBM Cloud acesse sua conta GitHub. Você será redirecionado para a página Configurar GitHub.
  5. Feche a página sem tomar nenhuma outra ação no console e, em seguida, tente criar a integração da ferramenta GitHub com Terraform ou a API novamente.

Por que não é possível usar a integração de ferramenta do Git Repos and Issue Tracking em minha cadeia de ferramentas de uma região em uma cadeia de ferramentas dentro de uma região diferente?

Não é possível usar uma instância do Git Repos and Issue Tracking em várias regiões.

Quando tento incluir a integração de ferramenta do Git Repos and Issue Tracking em minha cadeia de ferramentas, recebo a mensagem de erro a seguir:

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

Em que {local GitLab URL} é a URL da integração de ferramenta do Git Repos and Issue Tracking na região em que a cadeia de ferramentas reside.

Como o Git Repos and Issue Tracking está totalmente integrado ao serviço Continuous Delivery na região na qual eles estão em execução, não é possível usar uma instância do Git Repos and Issue Tracking em várias regiões.

Em vez de criar uma integração de ferramenta do Git Repos and Issue Tracking, crie uma integração de GitLab genérica e use essa integração para apontar para o repositório (repo) do Git Repos and Issue Tracking em uma região diferente.

  1. No console IBM Cloud, clique no ícone de hambúrguer Menu > Automação da plataforma > Cadeias de ferramentas. Na página Cadeias de ferramentas, clique na cadeia de ferramentas na qual você deseja incluir essa integração. Como alternativa, na página Visão geral do app, no cartão Entrega contínua, clique em Visualizar a cadeia de ferramentas e clique em Visão geral.

  2. Clique em Incluir ferramenta.

  3. Na seção Integrações de ferramentas, clique em GitLab.

  4. Clique no servidor GitLab que você deseja usar. Se o servidor GitLab no qual o repositório que você deseja acessar reside não aparecer nessa lista, inclua um servidor customizado:

    a. Clique em Custom Server (Servidor personalizado).

    b. Digite um nome para o servidor. Esse nome do servidor aparecerá na lista de servidores GitLab disponíveis.

    c. Digite a URL raiz do servidor GitLab customizado.

    d. Insira um token de acesso pessoal para seu servidor GitLab customizado. Se você não tiver um token de acesso pessoal, crie um.

  5. Se você tiver um repositório GitLab e desejar usá-lo, para o tipo de repositório, clique em Existente e digite a URL.

  6. Se você desejar usar um novo repositório GitLab, digite um nome para o repositório, digite a URL para o repositório que sendo clonado ou bifurcado e selecione o tipo de repositório:

    a. Para criar um repositório vazio, clique em Novo.

    b. Para criar uma cópia de um repositório GitLab, clique em Clonar.

    c. Para bifurcar um repositório GitLab para que seja possível contribuir com as mudanças por meio de solicitações de mesclagem, clique em Bifurcar.

  7. Se quiser criar um repositório público no servidor, desmarque a caixa de seleção Tornar este repositório privado.

  8. Se quiser usar o Issues do GitLab para rastreamento de problemas, marque a caixa de seleção Ativar o GitLab Issues.

  9. Se quiser rastrear a implementação de mudanças de código criando tags e comentários sobre confirmações, além de rótulos e comentários sobre problemas referenciados pelas confirmações, marque a caixa de seleção Rastrear a implementação de mudanças de código. Para obter mais informações, consulte Rastrear onde seu código é implantado com cadeias de ferramentas.

  10. Clique em Criar integração.

Para obter mais informações sobre como configurar uma integração de ferramenta do GitLab, consulte Configurando o GitLab.

Por que não é possível clonar meu repositório do Git Repos and Issue Tracking por https?

Deve-se usar um token de acesso pessoal ou uma chave SSH para executar operações do Git.

Você tenta enviar por push ou clonar um repositório na linha de comandos usando https e não consegue autenticar, mesmo que tenha inserido a senha correta.

O Git Repos and Issue Tracking usa um mecanismo de conexão única que não suporta a autenticação de Git que usa um nome de usuário e uma senha na linha de comandos.

Para executar operações do Git, tais como clonagem ou push, deve-se usar um token de acesso pessoal ou uma chave SSH. Para obter mais informações sobre como criar um token de acesso pessoal ou uma chave SSH, consulte o Tutorial de introdução.

Por que a autenticação é solicitada quando tento clonar o meu repositório do Git Repos and Issue Tracking usando SSH?

Pode haver problemas com o local ou as permissões para sua chave SSH privada, ou a linha de comandos do Git pode não estar usando sua chave SSH privada para autenticar com o Git Repos and Issue Tracking.

Eu incluí a chave pública SSH por meio da interface com o usuário do Git Repos and Issue Tracking. Quando tento clonar um repositório usando o SSH, uma senha ou um código de segurança é solicitado ou uma mensagem de erro é exibida indicando que a autenticação falhou.

Qualquer um dos problemas de SSH a seguir pode solicitar que você autentique ou exibir uma mensagem de erro:

  • A linha de comandos do Git pode não estar usando a chave SSH privada para autenticar com o Git Repos and Issue Tracking.

  • Sua chave SSH privada pode não estar no local ~/.ssh/id_rsa padrão.

  • Sua chave SSH privada pode não ter as permissões corretas (600).

Use qualquer um dos métodos a seguir para resolver esse problema:

  • Se você usar o local da chave SSH privada padrão, verifique as permissões para a pasta ~/.ssh/ e o arquivo de chave privado ~/.ssh/id_rsa. Se as permissões forem muito amplas, por padrão, o SSH não usará uma chave privada. Certifique-se de que as permissões para a pasta ~/.ssh/ estejam configuradas como 700 e as permissões para a pasta ~/.ssh/id_rsa sejam configuradas como 600.

  • Se a sua chave privada não estiver no local padrão, use o comando a seguir para especificá-la em uma variável de ambiente:

  GIT_SSH_COMMAND='ssh -i/path/to/private_key_file' git clone git@host:owner/repo.git
  • Para depurar esse problema usando informações de conexão, inclua o sinalizador -v ou -vvv na variável de 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

Eu tentei buscar mudanças por meio do meu repositório do Git Repos and Issue Tracking. Por que estou recebendo um erro 504 Gateway Time-out?

O seu repositório é maior que 1 GB. O sistema de gerenciamento de controle de origem do Git não foi projetado para armazenar arquivos binários grandes.

Ao tentar concluir uma operação em um repositório do Git Repos and Issue Tracking (como uma busca ou um clone), eu recebo uma mensagem de erro:

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

Você tem um repositório grande que é maior que 1 GB. O repositório também pode conter arquivos binários que requerem mais espaço do que os arquivos de texto armazenados em um formato compactado.

É possível usar qualquer um dos métodos a seguir para resolver esse problema:

  • Reduza o tamanho do repositório do Git Repos and Issue Tracking. Para obter mais informações sobre como reduzir o tamanho do seu repositório, consulte Reduzir o tamanho do repositório usando Git.

  • Use SSH para ignorar o tempo limite de clone padrão de 180 segundos.

  • Se você estiver tentando clonar um repositório, conclua um clone superficial (git clone --depth) para reduzir a quantia de dados transferidos, truncando o histórico de confirmação. Para obter mais informações sobre como concluir um clone superficial, consulte a documentação de referênciaGit.

Tentei incluir um usuário no meu projeto do GitLab por meio do e-mail, mas ele não recebeu o convite. Como posso incluí-lo em meu projeto?

O convite pode ser bloqueado pelo e-mail do usuário.

Convidei um usuário para o meu projeto do GitLab usando seu endereço de e-mail que está listado no Git Repos and Issue Tracking, mas ele não recebeu o e-mail.

O e-mail pode ser bloqueado na caixa de entrada do usuário por filtros de spam.

É possível usar qualquer um dos métodos a seguir para resolver esse problema:

  • Verifique sua pasta de spam de e-mail para determinar se o convite por e-mail foi marcado como spam. Os e-mails são enviados de um endereço noreply@. Atualize seus filtros de spam para permitir e-mails desse endereço.

  • Investigue se os filtros de spam corporativos que estão fora do controle do usuário estão bloqueando o e-mail. Solicite ao usuário que efetue login na interface com o usuário do Git Repos and Issue Tracking e que envie sua identificação de usuário. É possível incluir o usuário no projeto do GitLab usando sua identificação de usuário.

Quando eu uso Terraform para atualizar a configuração de uma integração de ferramenta Git existente, por que a configuração falha?

O recurso de integração da ferramenta Git especifica um type de clone, fork ou new, e especifica um repo de destino existente.

Quando você usa Terraform para atualizar uma integração de ferramenta Git, a configuração falha com a mensagem de erro The nonempty repository _REPO-URL_ already exists. Either delete the repository or change the Repository Type to 'Existing', em que REPO-URL é a URL do repo de destino.

Este erro é frequentemente causado pelas seguintes ações:

  • Seu recurso Terraform de integração da ferramenta Git especifica um type de clone, fork ou new. Você mudou o repo_url dentro do bloco initialization do recurso para a URL de um repo que existe.
  • Seu recurso Terraform de integração da ferramenta Git especifica um type de clone, fork ou new. Você não alterou o repo_url, mas mudou um ou mais outros argumentos dentro do bloco initialization do recurso. Nessa situação, o repo existe porque ele foi criado quando o recurso de integração da ferramenta Git foi anteriormente aplicado por Terraform.

Os tipos clone, fork e new instruem a integração da ferramenta Git para criar o repo de destino (repo_url) na premissa de que este repo não existe. Se a integração da ferramenta encontrar o repo de destino, ele falhará por design.

Altere o type de clone, fork ou new para clone_if_not_exists, fork_if_not_exists ou new_if_not_exists. Esses tipos instruem a integração da ferramenta Git para criar o repo de destino se ele não existir, ou usar o repo de destino como é se ele existir.

Apesar de você poder usar outros métodos para resolver esse erro, esses métodos não são recomendados porque você pode perder informações. Esses métodos também podem exigir mudanças no seu Terraform que não são boas práticas.

  • Altere repo_url para um repo que é criado quando você aplica o seu Terraform novamente. A alteração de um recurso Terraform após a criação inicial para evitar erros durante as atualizações subsequentes é um anti-padrão. Este método também deixa os repos criados anteriormente intactos, mas não mais ligados à cadeia de ferramentas.
  • Altere type para existing e, em seguida, aplique o seu Terraform novamente. A alteração de um recurso Terraform após a criação inicial para evitar erros durante as atualizações subsequentes é um anti-padrão.
  • Exclua manualmente o repo de destino e, em seguida, aplique o seu Terraform novamente. Alterações manuais entre operações Terraform automatizadas de outra forma não são recomendadas. Se você excluir o repo, a exclusão não pode ser desfeita, podendo causar perda de dados permanente.