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 IDです。
このエラーは、多くの場合、以下のアクションによって発生します。
- 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 操作間の手動変更は推奨されません。 リポジトリーを削除すると、削除を元に戻すことはできず、永続的なデータ損失が発生する可能性があります。