0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab CI/CDかJenkinsかー実際に悩んでみて

Posted at

GitLab CI/CDをベースにJenkinsも導入へ - ログ解析を通じたCI/CDツール選定

1. はじめに

CI/CDの導入は、開発プロセスの自動化・効率化を進める上で不可欠です。本稿では、代表的なCI/CDツールである GitLab CI/CDJenkins の特性と、実運用での使い分けについて、具体的なユースケースを交えて整理してみました。

2. GitLab CI/CDとJenkinsの概要

項目 GitLab CI/CD Jenkins
開発元 GitLab社 OSS(コミュニティ主導)
インストール要否 GitLabに統合(SaaS/オンプレ) 自前でサーバ構築が必要
ジョブ定義 .gitlab-ci.yml(YAML) Jenkinsfile または GUI設定
プラグイン 少なめ(標準機能が充実) 豊富なプラグイン群
VCS連携 GitLabに特化 多様なVCSに対応(GitHub, Bitbucketなど)

3. メリット・デメリット比較

GitLab CI/CD

メリット

  • GitLabに統合されており、導入しやすい
  • YAMLベースでCI設定が明確で、バージョン管理しやすい
  • GitLabの権限管理と連携可能
  • Web UIからパイプラインの状況が視覚的に把握できる

デメリット

  • GitLab以外のリポジトリとの連携に不向き
  • UIや通知設定などの柔軟性に乏しい
  • 外部ファイルや複雑な条件付き処理には不向き

Jenkins

メリット

  • 高いカスタマイズ性(プラグインで自由に拡張可能)
  • あらゆるVCSやビルドツールと連携可能
  • スケジュール実行や外部イベント連携などにも柔軟に対応

デメリット

  • 自前運用が必要(セキュリティやメンテナンスの手間がかかる)
  • 初学者には学習コストがやや高い
  • プラグイン依存によるトラブルの可能性がある

4. 使い分けの判断ポイント

判断軸 GitLab CI/CDが向いている Jenkinsが向いている
Gitとの連携 GitLab利用時 GitHub, Bitbucketなどと併用している場合
導入コスト 低く抑えたい 環境構築・カスタマイズ重視の場合
ワークフロー シンプルでGitベース 複雑な条件分岐や外部連携、非Gitトリガ対応
運用規模 小〜中規模チーム 大規模、複数プロジェクト管理時
IN/OUTファイル コミット必要(構成管理対象のファイル) コミット不要(構成管理対象だけでなく一時ファイルも解析できる)

5. 実際の活用例とユースケースでの使い分け

Jenkinsでログ解析を自動化したユースケース

当初はGitLab CI/CDで構築していたが、以下の課題に直面:

  • ログをインプットとするにはリポジトリにコミットが必要
  • 一時的なファイルをGit管理するのは非効率(履歴不要)
  • ストレージの無駄遣いやCIの無駄なトリガ増加
  • 大容量ファイルがリポジトリを肥大化させる

このため、GitLabでCI/CDを運用していたが、課題に直面し、後からJenkinsの導入を検討・実装しました。

CAN通信ログに含まれるCPU使用率ログをPythonで解析し、Jenkins上で以下のフローを構築:

  1. Jenkins Web UIからファイルをアップロード
  2. スクリプトを実行して解析処理を実施
  3. 結果をレポートとして出力

→ JenkinsはGitに依存せず、柔軟にファイルを取り扱えるため、ログ解析などの一時的な処理に最適

また、Jenkins上で解析スクリプトを柔軟に差し替えられるため、ログ形式の変更やフィルタ条件の追加などにも素早く対応できる。

GitLab CI/CDが効果的だったユースケース

  • コードのビルド・ユニットテスト・静的解析など、コミット単位で確実に実行
  • マージリクエストに連動して自動でCIが動作し、レビューの効率化に貢献
  • Markdownベースのドキュメント(設計資料など)をPandocでPDFに自動変換し、成果物として出力

→ コードとドキュメントの変更・レビュー・CIを1つのUIで完結できる点が大きな強み

6. まとめと得られた気づき

  • GitLab CI/CDとJenkinsは、それぞれに強みと弱みがある
  • "最初から完璧な選定"は難しく、実際に運用してみて分かることも多い
  • ツールを使い分けるという柔軟な発想が、現場に最適なCI/CDを育てていく

7. 補足:ハイブリッド運用の可能性

  • GitLabでコード管理+レビュー用CI、Jenkinsで夜間バッチや外部データ連携を実行
  • 役割を分けることで、CI/CDツールを無理に一本化せず効率的な運用が可能
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?