Red Hat OpenShift は、一般的なソースコード管理と自動ビルド・テストツールの利点を組み合わせた PaaS です。このプラットフォームは、クラウド開発者の作業の一部を可能にするように設計されていますが、万人向けではありません。
Git でコードを管理し、Jenkins で継続的インテグレーションを行うことを好むのであれば、OpenShift を利用するとしっくりくるでしょう。他のソースコードリポジトリーを使用していて、Red Hat OpenShift への乗り換えを考えているのであれば、Platform-as-a-Service について知っておくと、アプリケーション開発作業をより効率化できます。
Red Hat OpenShiftの基礎を理解しましょう。
OpenShift は Red Hat Enterprise Linux をベースとしており、ベアメタル、仮想サーバー、またはクラウド上で動作します。アプリケーションは Platform-as-a-Service のノード上で実行され、同じ PaaS 上で実行されるミドルウェアを通じて管理されます。ノードは、Red Hat が「ギア」と呼ぶ Linux コンテナを使用して複数の環境で実行できます。コンテナーは、分離されたプロセスと機能のグループを制御することでコンピュートリソースを割り当て、仮想マシンに似たサービスを提供しますが、オーバーヘッドは少なくなります。
開発者は Eclipse などの統合開発環境でコードを構築し、それをデプロイしてギアで実行することができます。このプロセスの一環として、使用するプログラミング言語や、データベースやウェブサーバーなどのコンポーネントを選択する必要があります。アプリケーションのコードはローカルの Git リポジトリで管理します。デプロイするときには、このコードを適切な環境にプッシュ(Git コマンド)するだけです。
Jenkinsを使ったOpenShiftでのテストの自動化
コードのネイティブな単体テストは重要です。しかし、統合テストを実行するには、大規模なソフトウェア開発ではコードを通して多くの実行パスが必要になります。このプロセスには時間と手間がかかり、あまりに多くの手動ステップに頼っているとエラーによって制限されてしまいます。Red Hat OpenShift への Jenkins ビルドの自動テストは、これを支援する役割を果たします。
Red Hat OpenShift の開発で Jenkins を使用する場合、通常通り Git リポジトリーにコードをコミットできます。Jenkins がリポジトリー内の新しいコードを検出すると、アプリケーションをビルドし、一連の自己カスタマイズテストを実行します。テストが成功すると、コードがデプロイされます。代わりに、コードはすでにデプロイされた部分を実行し続けます。これにより、誤ったコードの不注意なデプロイを効果的に止めることができます。
GitとJenkinsへの****プラクティスの適用
Git と Jenkins の両方は Red Hat OpenShift と緊密に統合されているため、これらを使用する際の *** プラクティスはこのサービスでのコード管理にも適用されます。
Git*** のプラクティスは、コードの状態を保存し、デプロイしない単一のコミットから始まります。コミットとは、コードがブレークしたときにチェックポイントを作成するためのものです。レビューも可能です。複数のコミットを行うことで、最後の作業バージョンと****ブレークアウトコードの間に小さな変更セットを実装するチャンスが増えます。
Git リポジトリでコードブランチを管理する方法を考えてみましょう。よく使われるのは、本番環境にリリースするすべてのコードを含む master ブランチと、開発用やテスト用などの別のブランチを使うというものです。プロジェクトによっては、トピックブランチと呼ばれる単一の機能のコードをまとめた短期的なブランチが存在することもあります。コードが安定したら、他のブランチにマージします。
コードを本番環境に移行するためのプロトコルを作成しましょう。これには、ブランチにラベルをつける際の命名ルールや、一度リリースしたブランチを更新しないルールなどを含めるべきです。
Jenkinsを使用する場合、アプリケーションを完全にソースからビルドすることを推奨します。完全にソースからビルドするためには、他のライブラリとサポートコードがソース管理下になければなりません。
Jenkinsのジョブはコードのビルドとテストに使うべきです。統合コードをテストすることで、単体テストでは見つからない不具合を発見することができます。異なるブランチのビルドとテストに別々のジョブを使用することで、テストをセルフカスタマイズし、各ブランチの特定のタイプのアクションを実装することができます。





