CI/CDの連携エラーは複数のシステムの間で起こる
連携エラーは、2つ以上のシステムがやり取りする中で発生するため、原因の所在がわかりにくいという特徴があります。個別のケースを見る前に、連携エラーに向き合う際の基本的な考え方と、切り分けの手順を整理しておきましょう。
責任の所在を一方に決めつけない
連携エラーが起きたとき、CI/CDツールの不具合だと考えがちです。しかし、連携先サービスの仕様変更や障害、自社の設定の誤り、ネットワークの制限なども原因として考えられます。一方に決めつけると、調査の方向を誤るおそれがあります。
CI/CDツールと連携先の両方の稼働状況を確認し、直前に設定や権限を変更していないかを振り返りましょう。提供会社に問い合わせる際も、両側で確認した内容を伝えると、回答を得やすくなります。調査の経緯は記録に残し、次に同じエラーが起きたときの手がかりにしましょう。
処理の流れに沿って切り分ける
切り分けの基本は、処理の流れに沿って、どこまで正常に進んでいるかを確認することです。例えば、GitHubからの通知がCI/CDツールに届いているか、パイプライン(ビルドからデプロイまでの処理の流れ)は起動したかを確認します。そのうえで、デプロイ(本番環境への反映)先への接続で止まっていないかを調べます。
CI/CDツールの実行ログと、連携先サービス側の履歴やログをあわせて見ると、止まった場所を特定しやすくなります。エラーメッセージに含まれる番号や文言を記録しておくと、技術ドキュメントでの調査や問い合わせに役立ちます。
GitHub・GitLab連携で起こり得るCI/CDの不具合
ソースコード管理サービスとの連携は、パイプラインを起動するきっかけを担っています。この連携に不具合があると、コードを登録してもビルドが始まらないといった問題につながります。起こり得る3つのケースを解説します。
Webhookが届かずパイプラインが起動しない
GitHubやGitLabは、コードが登録されたことをWebhookという仕組みでCI/CDツールに通知します。この通知が届かないと、パイプラインが起動しません。通知先のアドレスの誤り、ネットワークの制限、受け取る側の一時的な停止などが原因として考えられます。
GitHubやGitLabの設定画面では、Webhookの送信履歴や応答の結果を確認できる場合があります。送信に失敗している場合は、通知先の設定とCI/CDツール側の受付状況をあわせて確認しましょう。
認証トークンの期限が切れる
CI/CDツールがリポジトリ(ソースコードの保管場所)にアクセスするための認証トークンに有効期限が設定されていると、期限切れのタイミングで連携が止まることがあります。トークンを発行した担当者のアカウントが無効になった場合にも、同様の問題が起こり得ます。
トークンの有効期限を一覧で管理し、期限前に更新する手順を決めておきましょう。個人のアカウントではなく、組織として管理する連携用のアカウントやアプリを使うと、担当者の異動や退職の影響を受けにくくなります。
連携先の障害やメンテナンスの影響を受ける
GitHubやGitLabなどのサービス側で障害やメンテナンスが発生すると、自社の設定に問題がなくても連携が止まる場合があります。CI/CDツール側の不具合と見分けがつかず、調査に時間がかかることもあります。
各サービスが公開している稼働状況のページを確認する手順を、障害対応の手順書に含めておきましょう。サービス側の問題であれば、復旧後に失敗したパイプラインを再実行するなど、自社で取るべき対応を決めておくと落ち着いて対処できます。障害の情報を社内に共有する方法も決めておきましょう。
CI/CDツールとAWS・Azureの連携で起こり得るエラー
AWSやAzureなどのクラウドへのデプロイでは、クラウド側の権限や設定が関わります。そのため、CI/CDツールの設定だけでは解決できないエラーが起こる場合があります。代表的な2つのケースと対処法を紹介します。
権限の不足や認証情報の誤り
CI/CDツールからクラウドへデプロイする際、付与された権限が足りないと、操作が拒否されてエラーが発生します。クラウド側で権限の設定を見直した結果、以前は成功していたデプロイが失敗するようになるケースも考えられます。
エラーメッセージには、どの操作が拒否されたかが示されている場合があります。必要な権限を確認し、デプロイに必要な範囲で追加しましょう。アクセスキーの期限切れや、登録した値の誤りがないかもあわせて確認します。
利用上限や地域設定の違い
クラウドサービスには、作成できる資源の数や、一定時間内に実行できる操作の回数に上限が設けられている場合があります。上限に達すると、デプロイの途中で処理が失敗することがあります。
また、クラウドではデータセンターの地域ごとに資源を管理します。CI/CDツールの設定とクラウド側の地域設定が一致していないと、資源が見つからないというエラーが出る場合があります。上限の値や地域の設定を確認し、必要に応じてクラウド側の窓口に上限の引き上げを相談しましょう。
ITトレンドでは、最新の製品・サービスを多数比較・掲載しています。まず資料請求して、さまざまな製品の機能や特徴を比較してみてください。忙しい業務時間内でも、各社に問い合わせる手間なく、たった1回の入力(約60秒)でCI/CDツールの一括資料請求が可能です。浮いた時間で、じっくりと製品を比較検討し進めましょう。
CI/CDツールのAPI呼び出し回数の制限
CI/CDツールのAPI(ソフトウェア同士をつなぐ窓口)を使って、外部のシステムから操作したりデータを取得したりする場合、呼び出し回数の制限が問題になることがあります。制限の仕組みと、上限に達しないための工夫を解説します。連携の仕組みを作る前に確認しておくと、運用開始後の停止を避けやすくなります。
レート制限の仕組み
CI/CDツールのAPIには、一定時間内に呼び出せる回数の上限が設けられている場合があります。これをレート制限と呼びます。上限の値や数え方は、製品やプラン、認証の方法によって異なります。
上限を超えると、一時的にAPIからの応答が拒否され、連携している仕組みが止まることがあります。技術ドキュメントで上限の値を確認し、応答に含まれる残りの回数などの情報を確認できるかも調べておきましょう。
上限に達しないための工夫
上限に達する原因として、パイプラインの状態を短い間隔で何度も確認する仕組みや、多数のリポジトリの情報を一度に取得する処理が考えられます。必要以上に呼び出していないかを見直しましょう。
状態の確認には、定期的にAPIを呼び出す代わりに、Webhookで変化があったときだけ通知を受け取る方法があります。上限に達した場合は、時間をおいて再試行する処理を組み込んでおくと、連携が長時間止まる事態を避けやすくなります。
TeamsやSlackと連携しても手作業が残るケース
CI/CDツールとMicrosoft TeamsやSlackを連携しても、期待したほど作業が減らない場合があります。連携の範囲が通知だけにとどまっている、通知の設定が運用にあっていないといった理由が考えられます。2つのケースと対策を紹介します。
通知を受けても操作は別画面で行う
チャットツールに失敗の通知が届いても、原因の確認や再実行、承認の操作はCI/CDツールの画面で行う必要がある場合、画面を行き来する手間が残ります。連携の内容が通知の送信だけに限られていると、こうした状況が起こります。
製品や連携アプリによっては、チャットの画面から承認や再実行を行えるものがあります。自社で使っているツールの連携でどこまでの操作ができるかを確認し、操作できる人の権限設定もあわせて検討しましょう。
通知が多すぎて重要な情報が埋もれる
成功と失敗の両方の結果を毎回チャットに通知していると、通知の量が多くなり、重要な失敗を見落とす原因になる場合があります。結局、担当者がCI/CDツールの画面を定期的に確認するという手作業が残ってしまいます。
失敗時だけ通知する、本番環境のデプロイ結果は専用のチャンネルに送るなど、通知の条件と送り先を見直しましょう。通知の担当者を決め、対応したことをチャット上で共有するルールを作ると、確認漏れを減らせます。通知の設定は運用しながら定期的に見直すことが大切です。
連携エラーへの備えを比べたいCI/CDツール
外部サービスとの連携エラーに備える観点で比較を進める際の候補として、CI/CDツールを紹介します。APIの利用制限や認証の設定方法は、資料や公式ドキュメントで確かめましょう。
GitHubActions (ギットハブ・ジャパン合同会社)
- 豊富な公式・コミュニティ製アクションで簡単に自動化
- YAMLファイルでワークフローをコードとして管理
- GitHub連携で開発プロセスを自動化
AWSCodePipeline (アマゾンウェブサービスジャパン合同会社)
- リリースプロセスのステージ定義と合理化
- 新機能を迅速にリリースし、フィードバックを繰り返し反映
- ニーズに合わせて独自のプラグインを使用
AWS CodeBuild (アマゾン ウェブ サービス ジャパン合同会社)
- 自動スケーリングで無駄なくビルドを実行
- 使用した時間に対する分単位の従量課金制
- 独自のキーによる暗号化で情報を保護
AzureDevOps (日本マイクロソフト株式会社)
- あらゆる環境でCI/CDが可能
- ソース管理、作業管理などアジャイル開発機能が充実。
- テスト統合、品質保証からデプロイまで包括サポート。
BitbucketPipelines (アトラシアン株式会社)
- 100超のテンプレートとワークフローを提供。
- クラウドでスケール、CI/CDを組織全体で一元管理。
- 設定とログ監視でデプロイ状況を可視化し迅速対応
DevOpsツール&リソース (アマゾンウェブサービスジャパン合同会社)
- AWSアカウントで即利用可能、セットアップ不要。
- フルマネージドで運用不要、製品開発に集中。
- AWSの幅広いパートナーやサードパーティツールと連携可能。
まとめ
CI/CDツールの連携エラーは、CI/CDツールと連携先の両方が関係し、認証や権限、通知、利用上限など複数の要因で起こる場合があります。GitHubやGitLabではWebhookとトークンの期限、AWSやAzureでは権限と上限を確認しましょう。APIではレート制限、チャット連携では操作の範囲と通知の条件が確認のポイントです。処理の流れに沿って切り分けることが解決への近道です。連携機能を比較したい方は、ITトレンドの資料請求を活用してください。

