経緯
オンプレでアプリの開発をすることになりました。
その際、自動デプロイで本番環境とステージング環境ができればみんな楽に動作確認ができる!
そんな思いから、前回はgithub actionとは何かについてまとめました。
もし興味があれば見てくださると嬉しいです!!
今回は、CICDでデプロイするといったら有名なjenkinsとgithub actionsとはどんな違いがあるの?といった疑問を解消すべく記事にしています。
jenkinsとは
CICDを実現するためのツール。オープンソースのため汎用性とドキュメント豊富なのが特徴。
Javaが動く環境であれば、LinuxでもWindowsでも動作させることができる。
また、dockerやKubernetes上の動作もサポートされている。
Jenkinsの役割
Jenkinsの役割は、適切なツールを適切なタイミングで実行させ、結果を即座に通知すること。
Jenkinsを軸として、複数台のサーバーを接続してそれぞれで処理を行うことで、分散処理を可能にしている。
例えば、複数同時にテストを走らせたい時やそれぞれのテストが同じポートを使ったり、同じブラウザを使ったりする場合に複数のビルドを同時に走らせることができる。
異なるOSでの環境動作確認や、セキュリティ強化のために、dockerやクラウド上で実行しビルドが終了するとdockerやクラウドを破棄するといったことも可能。
github actionsとjenkins
perplexityとChatGPTでgithub actionsとJenkinsの比較表を作成してもらいました。
AIで作成してもらうのが便利とはいえ、その参照先まで行って確認することの重要性を感じました。
機能/特性 | GitHub Actions | Jenkins |
---|---|---|
ホスティング | GitHub上で提供、もしくはローカルまたはクラウド上で自己ホスト | ローカルまたはクラウド上で自己ホスト |
構成管理 | コード内でのYAMLファイルでの定義 | Web UIやGroovyスクリプトを使用 |
インテグレーション | GitHubのリポジトリと直接統合 | プラグインを使用した統合 |
パイプライン定義 | コードリポジトリ内のYAMLファイルで定義 | ウェブUIまたはJenkinsfile内で定義 |
イベントトリガー | プッシュ、プルリクエスト、スケジュールなど | プッシュ、プルリクエスト、スケジュールなど |
サポート | GitHubのドキュメントやコミュニティ | Jenkinsコミュニティやプラグインのドキュメント |
拡張性 | GitHubとのシームレスな統合、カスタマイズ性が限定的 | 豊富なプラグインエコシステム、高いカスタマイズ性 |
セキュリティ | GitHubの認証と権限管理に依存、セキュアな環境提供 | セキュリティ設定やプラグインの脆弱性に注意が必要 |
サポートOS | Linux/Windows/MacOS | Linux/Windows/MacOS |
利用の容易さとセットアップ | 簡単 | 中程度 |
スケーラビリティ | GitHubのインフラによって制限される | 高い |
コスト | GitHubサブスクリプションに含まれる、もしくは自分で設定することで無料で使える | 無料で使用可能だが専任管理者が必要 |
github actionsの選定理由
あくまでもプロジェクトのニーズや運用状況に応じて選択するツールは異なります。
私がgithub actionsでデプロイしようと思ったきっかけは、以下の通りです。
- 私自身が一回github actionsを使用したことがあり、少しは馴染みがある
- Jenkinsと比べ、簡単にセットアップできそう
- githubでの動作をイベントトリガーとして、指定の環境に自動デプロイしたい
最後に
この記事で少しでもgithub actionsとJenkinsの違いわかれば幸いです!
それでは、よき開発ライフを!!
参考文献