GitHub、GitLab、および Git Repos and Issue Tracking に関するトラブルシューティング
GitHub、GitLab、および Git Repos and Issue Tracking を使用中に生じる可能性がある一般的な問題として、GitHub の認証、ツール統合の構成に関する問題などが挙げられます。 多くの場合、いくつかの簡単なステップを実行することで、これらの問題から復旧することが可能です。
あるリージョンのツールチェーンに含まれる Git Repos and Issue Tracking ツール統合を、別のリージョン内のツールチェーンで使用できないのはなぜですか?
Git Repos and Issue Tracking のインスタンスは、複数のリージョンをまたいで使用することはできません。
Git Repos and Issue Tracking ツール統合をツールチェーンに追加しようとすると、次のエラー・メッセージを受け取ります。
Repository URL is not valid. The repository must be on {local GitLab URL}.
ここで、{local GitLab URL}
は、ツールチェーンが置かれているリージョンにおける、Git Repos and Issue Tracking ツール統合の URL です。
Git Repos and Issue Tracking と Continuous Delivery サービスは、共に稼働しているリージョン内で緊密に統合されているため、複数のリージョンをまたいで Git Repos and Issue Tracking のインスタンスを使用することはできません。
Git Repos and Issue Tracking ツール統合を作成する代わりに、汎用 GitLab 統合を作成し、この統合を使用して別のリージョンにある Git Repos and Issue Tracking リポジトリーを参照するようにしてください。
-
IBM Cloudコンソールから、メニューアイコンの
>Platform Automation>Toolchains をクリックします。 「ツールチェーン」ページで、その統合を追加するツールチェーンをクリックします。 あるいは、アプリの「概要」ページの「継続的デリバリー」カードで、**「ツールチェーンの表示」をクリックし、「概要」**をクリックします。
-
**「ツールの追加」**をクリックします。
-
「ツール統合」セクションで**「GitLab」**をクリックします。
-
使用する GitLab サーバーをクリックします。 アクセスしようとしているリポジトリーがある GitLab サーバーが、このリストに表示されていない場合は、カスタム・サーバーを追加します。
a. カスタムサーバーをクリックします。
b. サーバーの名前を入力します。 このサーバー名は、使用可能な GitLab サーバーのリストに表示されます。
c. カスタム GitLab サーバーのルート URL を入力します。
d. カスタム GitLab サーバーの個人用アクセス・トークンを入力します。 個人用アクセス・トークンがない場合は、それを作成します。
-
既存の GitLab リポジトリーを使用する場合は、リポジトリーのタイプとして**「既存」**をクリックし、URL を入力します。
-
新しい GitLab リポジトリーを使用する場合は、そのリポジトリーに付ける名前を入力し、複製またはフォークするリポジトリーの URL を入力し、リポジトリー・タイプを次のように選択します。
a. 空のリポジトリーを作成する場合は、**「新規」**をクリックします。
b. GitLab リポジトリーのコピーを作成する場合は、**「クローンを作成する (Clone)」**をクリックします。
c. GitLab リポジトリーをフォークし、マージ・リクエストで変更内容を提供できるようにする場合は、**「フォーク (Fork)」**をクリックします。
-
サーバー上にパブリック・リポジトリーを作成する場合は、**「このリポジトリーをプライベートにする (Make this repository private)」**チェック・ボックスをクリアします。
-
問題のトラッキングに GitLab Issues を使用する場合は、**「GitLab Issues を使用可能にする (Enable GitLab Issues)」**チェック・ボックスにチェック・マークを付けます。
-
コミットに対するタグおよびコメントと、コミットで参照される問題に対するラベルおよびコメントを作成することによって、コード変更のデプロイメントをトラッキングしたい場合は、**「コード変更のデプロイメントを追跡する (Track deployment of code changes)」**チェック・ボックスにチェック・マークを付けます。 詳しくは、ツールチェーンでコードがどこにデプロイされたかを追跡するを参照のこと。
-
「統合の作成」 をクリックします。
GitLab ツール統合の構成について詳しくは、GitLab の構成を参照してください。
https を使用して Git Repos and Issue Tracking リポジトリーを複製することができないのはなぜですか?
Git 操作を実行するときには個人用アクセス・トークンまたは SSH 鍵を使用する必要があります。
コマンド・ラインから https を使用してリポジトリーをプッシュまたは複製しようとしましたが、正しいパスワードを入力したのに認証できません。
Git Repos and Issue Tracking が使用するシングル・サインオン・メカニズムは、コマンド・ラインでユーザー名とパスワードを使用する Git 認証をサポートしていません。
複製またはプッシュなどの Git 操作を実行するには、個人用アクセス・トークンまたは SSH 鍵を使用する必要があります。 個人用アクセス・トークンまたは SSH 鍵の作成について詳しくは、入門チュートリアルを参照してください。
SSH を使用して Git Repos and Issue Tracking リポジトリーを複製しようとすると認証を求めるプロンプトが出されるのはなぜですか?
SSH 秘密鍵の場所または許可に問題がある可能性があります。あるいは、Git コマンド・ラインで、Git Repos and Issue Tracking での認証のために SSH 秘密鍵を使用していない可能性があります。
Git Repos and Issue Tracking ユーザー・インターフェースを使用して、SSH 公開鍵を追加しました。 SSH を使用してリポジトリーを複製しようとすると、パスワードまたはセキュリティー・コードの入力を求めるプロンプトが出されるか、あるいは認証の失敗を示すエラー・メッセージが表示されます。
SSH に関して以下のいずれかの問題があると、認証を求めるプロンプトが出されるか、エラー・メッセージが表示される可能性があります。
-
Git コマンド・ラインで、Git Repos and Issue Tracking での認証のために SSH 秘密鍵を使用していない可能性がある。
-
SSH 秘密鍵がデフォルトの場所 ~/.ssh/id_rsa に存在しない可能性がある。
-
SSH 秘密鍵に正しい許可 (600) が付与されていない可能性がある。
この問題を解決するには、以下のいずれかの方法を使用します。
-
SSH 秘密鍵のデフォルトの場所を使用する場合は、~/.ssh/ フォルダーと ~/.ssh/id_rsa 秘密鍵ファイルに対する許可を確認します。 許可の範囲が広すぎる場合、デフォルトでは、SSH で秘密鍵が使用されません。 ~/.ssh/ フォルダーの許可が 700 に設定されていて、~/.ssh/id_rsa フォルダーの許可が 600 に設定されていることを確認してください。
-
秘密鍵がデフォルトの場所にない場合は、次のコマンドを使用して環境変数で指定してください。
GIT_SSH_COMMAND='ssh -i/path/to/private_key_file' git clone git@host:owner/repo.git
- 接続情報を使用してこの問題をデバッグするには、-v フラグまたは -vvv フラグを
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
Git Repos and Issue Tracking リポジトリーから変更内容をフェッチしようとすると、504 Gateway Time-out
エラーが発生するのはなぜですか?
お客様のリポジトリーの大きさが 1 GB を超えています。 Git ソース制御管理システムは、大容量のバイナリー・ファイルを格納するようには設計されていません。
Git Repos and Issue Tracking リポジトリーでの操作 (フェッチやクローンなど) を実行しようとすると、次のエラー・メッセージを受け取ります。
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
1 GB より大きい大容量のリポジトリーがあります。 さらにそのリポジトリーには、圧縮フォーマットで格納されるテキスト・ファイルより多くのスペースを必要とするバイナリー・ファイルが含まれている可能性もあります。
この問題を解決するには、以下のいずれかの方法を使用することができます。
-
Git Repos and Issue Tracking リポジトリーのサイズを小さくする。 リポジトリのサイズを小さくする方法については、Gitてリポジトリのサイズを小さくするをご覧ください。
-
SSH を使用して、デフォルトの 180 秒のクローン・タイムアウトを迂回する。
-
リポジトリーのクローンを試行する場合は、コミット履歴を切り捨てることによって転送対象データ量を削減するシャロー・クローン (
git clone --depth
) を実行する。 浅いクローンの完成についての詳細は、Gitリファレンスのドキュメントを参照してください。
E メールを使用してユーザーを GitLab プロジェクトに追加しようとしましたが、そのユーザーは招待を受信しませんでした。 ユーザーをプロジェクトに追加するにはどうすればよいですか?
ユーザーの E メールで招待がブロックされている可能性があります。
Git Repos and Issue Tracking にリストされている E メール・アドレスを使用してユーザーを GitLab プロジェクトに招待しましたが、そのユーザーは E メールを受信しませんでした。
メールが、スパム・フィルターによってユーザーの受信ボックスからブロックされている可能性があります。
この問題を解決するには、以下のいずれかの方法を使用することができます。
-
E メール・スパム・フォルダーを調べて、招待 E メールがスパムとしてマーク付けされていないか確認します。 E メールは noreply@ アドレスから送信されます。 このアドレスからの E メールを許可するように、スパム・フィルターを更新してください。
-
ユーザーが制御できない企業のスパム・フィルターによって、E メールがブロックされていないかどうか調べます。 ユーザーに、Git Repos and Issue Tracking ユーザー・インターフェースにログインしてユーザー ID を送信するよう依頼してください。 そのユーザー ID を使用して、GitLab プロジェクトにユーザーを追加できます。
Terraform を使用して既存の Git ツール統合の構成を更新するときに、構成が失敗するのはなぜですか?
Git ツール統合リソースは、 clone
、 fork
、または new
の type
を指定し、既存のターゲット・リポジトリーを指定します。
Terraform を使用して Git ツール統合を更新すると、構成が失敗し、 The nonempty repository _REPO-URL_ already exists. Either delete the repository or change the Repository Type to 'Existing'
というエラー・メッセージが表示されます。ここで、 REPO-URL
はターゲット・リポジトリーの URL
です。
このエラーは、多くの場合、以下のアクションによって発生します。
- Git ツール統合 Terraform リソースは、
clone
、fork
、またはnew
のtype
を指定します。 リソースのinitialization
ブロック内のrepo_url
が、存在するリポジトリーの URL に変更されました。 - Git ツール統合 Terraform リソースは、
clone
、fork
、またはnew
のtype
を指定します。repo_url
を変更しませんでしたが、リソースのinitialization
ブロック内の 1 つ以上の他の引数を変更しました。 この場合、リポジトリーは、 Git ツール統合リソースが以前に Terraform によって適用されたときに作成されたために存在します。
clone
、 fork
、および new
の各タイプは、このリポジトリーが存在しないことを前提としてターゲット・リポジトリー (repo_url
) を作成するように Git ツール統合に指示します。 ツール統合がターゲット・リポジトリーを検出すると、意図的に失敗します。
type
を clone
、 fork
、または new
から clone_if_not_exists
、 fork_if_not_exists
、または new_if_not_exists
に変更します。 これらのタイプは、 Git ツール統合に対して、ターゲット・リポジトリーが存在しない場合はそれを作成し、存在する場合はそのままターゲット・リポジトリーを使用するように指示します。
このエラーを解決するために他の方法を使用することもできますが、情報が失われる可能性があるため、これらの方法は推奨されません。 これらの方法では、優れたプラクティスではない変更が Terraform に必要になる場合もあります。
repo_url
を、Terraform を再度適用したときに作成されたリポジトリーに変更します。 最初の作成後に Terraform リソースを変更して、後続の更新中のエラーを回避することは、アンチ・パターンです。 また、この方法では、以前に作成したリポジトリーはそのまま残りますが、ツールチェーンにはバインドされなくなります。type
をexisting
に変更してから、Terraform を再度適用します。 最初の作成後に Terraform リソースを変更して、後続の更新中のエラーを回避することは、アンチ・パターンです。- ターゲット・リポジトリーを手動で削除してから、Terraform を再度適用してください。 自動化されていない Terraform 操作間の手動変更は推奨されません。 リポジトリーを削除すると、削除を元に戻すことはできず、永続的なデータ損失が発生する可能性があります。