オンプレミスの Bitbucket リポジトリを構築する
Azure DevOps Services
オンプレミスの Bitbucket サーバーまたは別の Git サーバーを Azure Pipelines と統合できます。 オンプレミス のサーバーがインターネットに公開されているか、公開されていない可能性があります。
Azure Pipelines サービスを実行するサーバーからオンプレミス サーバーに到達できる場合は、次のようにします。
- クラシック ビルドを設定し、CI トリガーを構成できます
Azure Pipelines サービスを実行するサーバーからオンプレミス サーバーに到達できない場合は、次のようにします。
- クラシック ビルド パイプラインを設定し、手動ビルドを開始できます
- CI トリガーを構成できない
注
YAML パイプラインは、オンプレミスの Bitbucket リポジトリでは機能しません。
注
PR トリガーは、オンプレミスの Bitbucket リポジトリでは使用できません。
オンプレミス のサーバーにホストされているエージェントからアクセスできる場合は、ホストされているエージェントを使用して、手動ビルド、スケジュールされたビルド、または CI ビルドを実行できます。 それ以外の場合は、オンプレミス サーバーにアクセスしてコードをフェッチできるセルフホステッド エージェントを設定する必要があります。
Azure Pipelines から到達可能
オンプレミスの Bitbucket サーバーに Azure Pipelines サービスからアクセスできる場合は、その他の Git サービス接続を作成し、これを使用してパイプラインを作成します。 [Azure Pipelines からこの Git サーバーへのアクセスを試みる] をオプションをオンにします。
CI トリガーは、Webhook ではなくポーリングを通じて動作します。 言い換えると、Azure Pipelines は、コードに更新があるかどうかを Bitbucket サーバーを定期的にチェックします。 ある場合は、Azure Pipelines によって新しい実行が開始されます。
Azure Pipelines から到達できない
Azure Pipelines から Bitbucket サーバーにアクセスできない場合は、次の 2 つのオプションがあります。
IT 部門と協力して、Azure Pipelines とオンプレミス Git サーバーの間のネットワーク パスを開きます。 たとえば、ファイアウォール規則に例外を追加して、Azure Pipelines からのトラフィックのフローを許可することができます。 許可する必要がある IP アドレスを確認するには、Azure DevOps IP に関するセクションを参照してください。 さらに、Azure Pipelines がサーバーの FQDN を IP アドレスに解決できるように、Bitbucket サーバーのパブリック DNS エントリが必要です。
その他の Git 接続を使用できますが、Azure Pipelines からこの Git サーバーへのアクセスをしないように Azure Pipelines に指示してください。 CI トリガーと PR トリガーは、その他の Git リポジトリ 使用できません。 手動またはスケジュールされたパイプラインの実行のみを開始できます。
Microsoft でホストされているエージェントから到達可能
必要になる可能性があるもう 1 つの決定は、Microsoft でホストされるエージェントを使用するか、セルフホステッド エージェントを使用してパイプラインを実行するかです。 この選択は、多くの場合、Microsoft がホストするエージェントがサーバーに到達できるかどうかによって異なります。 可能かどうかを確認するには、Microsoft がホストするエージェントを使用するパイプラインを作成し、サーバーからソース コードをチェックアウトする手順を必ず追加してください。 これが成功した場合は、引き続き Microsoft でホストされるエージェントを使用できます。
Microsoft でホストされているエージェントから到達できない
上記のセクションで説明した単純なテスト パイプラインがエラー TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting
で失敗した場合、Microsoft がホストするエージェントから Bitbucket サーバーに到達できません。 これは、ファイアウォールがこれらのサーバーからのトラフィックをブロックしていることが原因である可能性があります。 この場合、次の 2 つのオプションがあります。
IT 部門と協力して、Microsoft がホストするエージェントと Bitbucket サーバーの間のネットワーク パスを開きます。 Microsoft でホストされるエージェントの ネットワーク に関するセクションを参照してください。
セルフホステッド エージェント 使用するか、スケール セット エージェント 使用するように切り替えます。 これらのエージェントはネットワーク内で設定できるため、Bitbucket サーバーにアクセスできます。 これらのエージェントには、Azure Pipelines への送信接続のみが必要です。 受信接続用のファイアウォールを開く必要はありません。 サービス接続の作成時に指定したサーバーの名前が、セルフホステッド エージェントから解決できることを確認します。
Azure DevOps の IP アドレス
他 Git 接続を使用してクラシック パイプラインを設定し、Azure Pipelines サービスと Bitbucket サーバー間の通信を無効にし、セルフホステッド エージェントを使用してコードをビルドすると、エクスペリエンスが低下します。
- パイプラインの作成時にリポジトリの名前を手動で入力する必要があります
- Azure Pipelines ではコードの変更をポーリングできないため、CI トリガーを使用することはできません
- スケジュールされたトリガーを、変更がある場合にのみビルドするオプションと共に使用することはできません
- ユーザー インターフェイスで最新のコミットに関する情報を表示することはできません
このエクスペリエンスを強化する場合は、Azure Pipelines から Bitbucket Server への通信を有効にすることが重要です。
Azure DevOps からのトラフィックが Bitbucket サーバーに到達できるようにするには、ファイアウォールの許可リストに 受信接続 で指定された IP アドレスまたはサービス タグを追加します。 ExpressRoute を使用する場合は、ファイアウォールの許可リスト ExpressRoute IP 範囲も含めるようにしてください。
Azure Pipelines が他の Git サービス接続 Git サーバーへのアクセスを試みることを許可します。
情報提供の実行
情報実行では、Azure DevOps が YAML パイプラインのソース コードを取得できなかったことを示します。 ソース コードの取得は、プッシュされたコミットなどの外部イベントに応答して発生します。 また、内部トリガーに応答して発生します。たとえば、コードの変更があるかどうかを確認し、スケジュールされた実行を開始するかどうかなどです。 ソース コードの取得は複数の理由で失敗する可能性があります。多くの場合、Git リポジトリ プロバイダーによって調整が要求されます。 情報実行の存在は、必ずしも Azure DevOps がパイプラインを実行することを意味するとは限りません。
情報の実行は、次のスクリーンショットのようになります。
次の属性によって情報実行を認識できます。
- 状態が
Canceled
- 期間は
< 1s
- 実行名には、次のいずれかのテキストが含まれています。
Could not retrieve file content for {file_path} from repository {repo_name} hosted on {host} using commit {commit_sha}.
Could not retrieve content for object {commit_sha} from repository {repo_name} hosted on {host}.
Could not retrieve the tree object {tree_sha} from the repository {repo_name} hosted on {host}.
Could not find {file_path} from repository {repo_name} hosted on {host} using version {commit_sha}. One of the directories in the path contains too many files or subdirectories.
- 通常、実行名には、YAML パイプラインの読み込みが失敗する原因となった BitBucket/GitHub エラーが含まれています
- ステージ/ジョブ/ステップなし
制限事項
Azure Pipelines は、リポジトリから Azure Devops ポータルのドロップダウン リストに最大 2,000 個のブランチを読み込みます。たとえば、手動ビルドとスケジュールされたビルド 設定用の Default ブランチに読み込む場合や、パイプラインを手動で実行するときにブランチを選択する場合などです。 目的のブランチが一覧に表示されない場合は、目的のブランチ名を手動で入力します。
よくあるご質問
Bitbucket Server の統合に関連する問題は、次のカテゴリに分類されます。
- 失敗したトリガー: リポジトリに更新をプッシュするときにパイプラインがトリガーされません。
- チェックアウトの失敗: パイプラインはトリガーされますが、チェックアウト手順で失敗します。
トリガーの失敗
サーバーに変更をプッシュしましたが、パイプラインがトリガーされていません。
次の各手順を実行して、失敗するトリガーをトラブルシューティングしてください。
Bitbucket サーバーに Azure Pipelines からアクセスできますか? Azure Pipelines は、Bitbucket サーバーに変更がないか定期的にポーリングします。 Bitbucket サーバーがファイアウォールの内側にある場合、このトラフィックがサーバーに到達しない可能性があります。 詳細については、「Azure DevOps の IP アドレス を参照し、必要なすべての IP アドレスに例外が付与されていることを確認します。 これらの IP アドレスは、最初に例外ルールを設定してから変更されている可能性があります。 手動実行を開始できるのは、外部 Git 接続を使用した場合と、サーバーが Azure Pipelines からアクセスできない場合のみです。
パイプラインが一時停止または無効化されていませんか? パイプライン用のエディターを開いて、[設定] を選択して確認してください。 パイプラインが一時停止または無効化されている場合、トリガーは機能しません。
変更のプッシュ先のブランチまたはパスを除外しましたか? 変更を含まれているブランチに含まれているパスにプッシュしてテストします。 トリガーのパスは、大文字と小文字が区別される点に注意してください。 トリガーのパスを指定するときには、実際のフォルダーと同じ大文字と小文字を使用してください。
コードに更新をプッシュしませんでしたが、パイプラインはまだトリガーされています。
- Bitbucket の継続的インテグレーション トリガーは、ポーリングによって機能します。 各ポーリング間隔の後、Azure Pipelines は Bitbucket サーバーに接続して、コードに更新があったかどうかを確認しようとします。 Azure Pipelines が (ネットワークの問題が原因で) Bitbucket サーバーに到達できない場合は、コードが変更された可能性があると仮定して、新しい実行を開始します。 Azure Pipelines が YAML パイプラインのコードを取得できない場合は、情報実行作成されます。
チェックアウトの失敗
新しい実行を手動で開始しようとすると、開始するまでに 4 ~ 8 分の遅延があります。
- Bitbucket サーバーに Azure Pipelines から到達できません。 Bitbucket サービス接続で Azure Pipelines からこの Git サーバーへのアクセスを するオプションを選択していないことを確認します。 このオプションが選択されている場合、Azure Pipelines はサーバーへの接続を試みます。サーバーに到達できないので、最終的にタイムアウトになり、実行が開始されます。 このオプションをオフにすると、手動実行が高速化されます。
チェックアウト手順が失敗し、サーバーを解決できないというエラーが表示されます。
Microsoft でホストされるエージェントを使用していますか? その場合、これらのエージェントは Bitbucket サーバーに到達できない可能性があります。 詳細については、「Microsoft がホストするエージェントから到達できない」を参照してください。