初めに
CI(Continuous Integration : 継続的インテグレーション)、CD(Continuous Delivery / Deployment:継続的なデリバリ/デプロイ)の学習のために、CI/CDを実現するツールを調査しました。
ツールと特徴
ほぼ利用しないで、インターネットの情報だけで勝手に特徴をまとめています。(Jenkinsは昔からあるツールなので少し触ったことはあります)
他にもツールは多数ありますが、私が小耳に挟んだものをピックアップしています。
以下は、私の思い込み及び勝手な感想です。
-
Jenkins(https://www.jenkins.io/)
- オープンソースのCI/CDツール
- 様々な環境(オンプレ/クラウド)、プラットフォーム(Linux/Mac/Windows...)で動作する
- 汎用性が高く、プラグインも多数公開されてている。
- WARファイル1個で実行できる。!!
- K8sに特化した Jenkins X プロジェクトもある。
-
Tekton(https://tekton.dev/)
- オープンソースのCI/CDツール
- Kubernates Native
- ビルド・テスト・デプロイもK8sのPod上で実行
- Katakondaで動作するチュートリアル有(Tektonのページから「Get started with interactive tutorials」)
- Open Shift Piplelineとして利用
-
CircleCI(https://circleci.com/ja/)
- SaaSでサービスとして利用、有料ツール。ただし、無料プランあり
- Mac/Windowsのビルド環境も構築可能
- オンプレでも利用可能
- コードリポジトリはGitHub または Bitbucket
- マニュアル・サンプルが豊富
サマリー
クラスター環境を最大限に利用したい場合は、Tekton、過去のしがらみがなければ導入が用意で学習コストが低い CircleCI、汎用性を求める場合は Jenkinsが良いと考えます。私はクラスター環境でのCI/CDを試してみたいので、Tekton を学習しようと思います。
名前 | 特徴 | クラスタ | 汎用性 | 学習コスト |
---|---|---|---|---|
Tekton | K8sクラスタで利用にに特化、シームレス | ○ | △ | △ |
CircleCI | SaaS提供で直ちに利用可能、Windows/Mac向けソースのビルド可 | △ | △ | ○ |
Jenkins | 様々な環境・フラットフォームに対応、汎用性、プラグイン多数 | △ | ○ | △ |