My RSS Reader

Description about Blog Author


イベントレポート '25/6月開催 とことんDevOps勉強会「GitLabでCI/CDを動かしてみよう」

今回のとことんDevOps勉強会は「GitLabでCI/CDを動かしてみよう」と題し、日本仮想化技術の大内がGitLab初心者やこれからCI/CDに挑戦したい方を対象に入門編として登壇しました。 GitLabは、ソースコード管理に加えてCI/CDパイプラインの構築や自動化が可能な開発プラットフォームです。本セッションでは、GitLabの基本的な使い方に加え、CI/CDの実行基盤となるRunnerの仕組みと設定方法について、図解とデモを交えてわかりやすく解説しました。

セミナー動画

youtu.be

発表資料

speakerdeck.com

Q&Aまとめ

エラー発生時にメール・Slack・Teamsへ通知する方法は?

質問

CI/CDの処理結果をメール、Slack, Teamsに送信したい(エラー発生時)。どのような設定が必要でしょうか?

回答

GitLabではエラー時に各種通知を送信可能です。メールは個人設定か、.gitlab-ci.ymlで外部メール送信コマンドを利用。Slackは「Slack通知」インテグレーションでWebhookを設定、TeamsはIncoming Webhookを作成し.gitlab-ci.ymlでcurl等でPOSTします。ジョブにwhen: on_failureを指定すれば失敗時のみ通知されます。

GitLabをオンプレミスでCI込み運用する際の必要スペックは?

質問

GitLabをCI込みでオンプレで動かす場合、どの程度のCPUやメモリを割り当てたらいいものでしょうか?

回答

GitLabをCI込みでオンプレ運用する場合、最小構成でも4CPU/8GBメモリが推奨されます。ただしCIジョブの数や規模によってリソース消費が増えるため、中規模以上では8CPU/16GBメモリ以上を確保すると安心です。さらにGitLab Runnerを複数動かす場合はRunner用に別途リソースを見積もるのが望ましく、ジョブの並列数に応じて追加のCPU・メモリが必要になります。運用開始後は負荷状況をモニタリングし、必要に応じてスケールアップを検討してください。

CIがうまく動作しないときのトラブルシューティング方法

質問

CIがうまく動作していないような場合、どのようにトラブルシューティングをしたらいいのですか?

回答

まずはGitLabのジョブのログを確認し、エラーの原因を特定します。.gitlab-ci.ymlの記述ミスやパイプライン設定の不備がないかも見直しましょう。次に、ローカル環境で同じコマンドを実行し、環境依存の問題を切り分けます。また、ランナーの状態や権限設定も確認が必要です。それでも解決しない場合は、GitLabの公式ドキュメントやコミュニティフォーラムを活用するとよいでしょう。

さらに最近では、CircleCIがMCP(Model Context Protocol)を活用し、生成AIとの連携による問題解決支援に取り組んでいます。これにより、ジョブログの解析やエラーの根本原因特定、修正案の提示までAIがサポートする未来が期待されています。現時点では実験的な段階ですが、今後こうした技術が他のCIツールにも広がる可能性があります。

GitLab CIとGitHub Actions、どちらが使いやすい?

質問

GitLabのCIとGitHubのCI、どっちが使いやすいのでしょうか

回答

GitHub Actionsは特に拡張性や豊富なマーケットプレイスが魅力で、多様なワークフローが簡単に構築できます。また情報量が豊富で、検索すると多くの事例や解説が見つかるため、学習コストが低く初心者にも優しい点が特徴です。初めてCI/CDを触る場合はGitHub Actionsを推奨できます。

フルでCI/CDのステージを作るとどのような感じになりますか?(DockerfileのLint、Docker buildなど

質問

フルでCI/CDのステージを作るとどのような感じになりますか(様々なので困ると思いますが)?DockerfileのLint、Docker build など

回答

CI/CDのフルステージはプロジェクトにより異なりますが、一般的には コードチェック → ビルド → テスト → デプロイ の順に構成します。例えば、DockerfileのLintを行うステージでは hadolint を使い、次に docker build でイメージを作成、さらにセキュリティスキャンや動作確認テストを追加する流れです。最後に docker push でリポジトリにプッシュし、本番やステージング環境へデプロイします。全体をパイプライン化することで、自動で品質チェックとリリースが行える仕組みになります。

GitLabにもJenkinsのような拡張機能はありますか?

質問

jenkinsでは、色々なプラグインがありますが、gitlabでも同様なプラグインのような拡張機能は提供されますか?

回答

GitLabではJenkinsの「プラグイン」と同じ仕組みはありませんが、多くの機能が標準で組み込まれており、追加のインストールなしで利用できます。また、外部ツールとの連携には「インテグレーション」やAPI、Webhooksを活用できます。さらに、GitLab RunnerやCI/CDジョブ内でDockerイメージを使うことで、柔軟に機能拡張が可能です。Jenkinsほど自由度の高いプラグインエコシステムはありませんが、標準機能が充実しているため多くの用途をカバーできます。

オンプレGitLabとgitlab.comの同期は可能?

質問

オンプレGitlabとgitlab.com の同期は出来るのでしょうか?

回答

はい、可能です。ただしGitLab自体に「自動同期」機能はなく、いくつかの方法で実現します。代表的なのは「ミラーリング機能」で、オンプレGitLabからgitlab.comへのプッシュミラー設定、またはgitlab.comからオンプレへのフェッチミラー設定を行います。これによりリポジトリの内容を双方向または片方向で同期できます。ただし、双方向の場合は競合が起きないよう運用ルールを整えることが重要です。CI/CD設定や権限までは同期されない点にも注意が必要です。

[source]