Code Stream で継続的インテグレーションと継続的デリバリ (CICD) パイプラインを作成するには、CICD スマート パイプライン テンプレートを使用します。CICD ネイティブ ビルドを計画するには、この例で示されている計画のパイプラインを作成する前にスマート パイプライン テンプレートの情報を収集します。

CICD パイプラインを作成するには、パイプラインの継続的インテグレーション (CI) ステージと継続的デリバリ (CD) ステージの両方を計画する必要があります。

スマート パイプライン テンプレートに情報を入力して保存した後、テンプレートでステージとタスクを含むパイプラインが作成されます。また、開発や導入などの選択した環境タイプに基づいて、イメージの展開先となる場所も示されます。パイプラインは、コンテナ イメージを公開し、実行に必要なアクションを実行します。パイプラインの実行後、その実行のトレンドを監視できます。

パイプラインに Docker Hub のイメージが含まれている場合は、パイプラインを実行する前に、イメージに cURL または wget が組み込まれていることを確認する必要があります。パイプラインが実行されると、Code Stream は、cURL または wget を使用してコマンドを実行するバイナリ ファイルをダウンロードします。

ワークスペースの構成については、パイプライン ワークスペースの構成を参照してください。

継続的インテグレーション (CI) ステージの計画

パイプラインの CI ステージを計画するには、外部および内部の要件を設定し、スマート パイプライン テンプレートの CI 部分で必要とされる情報を決定します。サマリを示します。

この例では、Docker ワークスペースを使用します。

クラウドベースまたはリモートのオンプレミスのエンドポイントおよびリポジトリには以下が必要です。

  • 開発者が自分のコードをチェックインする Git ソース コード リポジトリ。Code Stream は、開発者が変更をコミットするときに、パイプラインに最新のコードを取得します。
  • 開発者のソース コードがあるリポジトリの Git エンドポイント。
  • コンテナ内でビルド コマンドを実行する Docker ビルド ホストの Docker エンドポイント。
  • Code Stream がイメージを Kubernetes クラスタに展開できるようにするための Kubernetes エンドポイント。
  • 継続的インテグレーションのテストで実行するコンテナを作成するビルダー イメージ。
  • Docker ビルド ホストからビルダー イメージを取得できるようにするためのイメージ レジストリ エンドポイント。

プロジェクトへのアクセス権が必要です。プロジェクトはパイプライン、エンドポイント、ダッシュボードなどすべての作業をグループ化します。Code Stream で、プロジェクトのメンバーであることを確認します。メンバーでない場合は、プロジェクトにメンバーとして追加するように Code Stream 管理者に依頼します。Code Streamでプロジェクトを追加する方法を参照してください。

Git Webhook が必要になります。これにより、開発者がコード変更をコミットするときに Code Stream が Git トリガを使用してパイプラインがトリガされるようにできます。Code Stream で Git トリガを使用してパイプラインを実行する方法を参照してください。

ビルドのツールセット:

  • Maven などのビルド タイプ。
  • 使用するすべての後処理ビルド ツール(JUnit、JaCoCo、Checkstyle、FindBugs など)。

公開ツール:

  • ビルド コンテナを展開する Docker などのツール。
  • イメージ タグ(コミット ID またはビルド番号のいずれか)。

ビルドのワークスペース:

  • Docker ビルド ホスト(Docker エンドポイント)。
  • イメージ レジストリ。パイプラインの CI 部分によって、選択したレジストリ エンドポイントからイメージが取得されます。コンテナは CI タスクを実行し、イメージを展開します。レジストリに認証情報が必要な場合は、イメージ レジストリ エンドポイントを作成し、ここで選択して、ホストがレジストリからイメージを取得できるようにする必要があります。
  • 継続的インテグレーション タスクで実行するコンテナを作成するビルダー イメージの URL。

継続的デリバリ (CD) ステージの計画

パイプラインの CD ステージを計画するには、外部および内部の要件を設定し、スマート パイプライン テンプレートの CD 部分に入力する情報を決定します。

クラウドベースまたはリモートのオンプレミスのエンドポイントには以下が必要です。

  • Code Stream がイメージを Kubernetes クラスタに展開できるようにするための Kubernetes エンドポイント。

環境タイプとファイル:

  • すべての環境タイプ (Code Stream) は、開発や導入などのアプリケーションを展開します。スマート パイプライン テンプレートは、選択した環境タイプに基づいてパイプライン内のステージとタスクを作成します。
    表 1. CICD スマート パイプライン テンプレートで作成されるパイプライン ステージ
    パイプライン コンテンツ 機能
    ビルド公開ステージ コードをビルドおよびテストし、ビルダー イメージを作成し、そのイメージを Docker ホストに公開します。
    開発ステージ 開発 Amazon Web Services (AWS) クラスタを使用してイメージを作成および展開します。このステージでは、クラスタで名前空間を作成し、プライベート キーを作成できます。
    本番ステージ VMware Tanzu Kubernetes Grid Integrated Edition(旧称 VMware Enterprise PKS)の本番バージョンを使用して、イメージを本番環境の Kubernetes クラスタに展開します。
  • CICD スマート パイプライン テンプレートの CD セクションで選択した Kubernetes YAML ファイル。

    Kubernetes YAML ファイルには、名前空間、サービス、展開に関する 3 つの必須のセクションと、シークレットに関する 1 つのオプションのセクションが含まれています。プライベート所有のリポジトリからイメージをダウンロードすることによってパイプラインを作成する場合は、Docker 構成の [シークレット] を含むセクションを含める必要があります。 作成するパイプラインで、パブリックに利用可能なイメージのみを使用する場合はシークレットは不要です。次のサンプル YAML ファイルには、4 つのセクションがあります。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: codestream
      namespace: codestream
    ---  
    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19
    kind: Secret
    metadata:
      name: dockerhub-secret
      namespace: codestream
    type: kubernetes.io/dockerconfigjson
    ---   
    apiVersion: v1
    kind: Service
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      ports:
        - port: 80
      selector:
        app: codestream-demo
        tier: frontend
      type: LoadBalancer 
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: codestream-demo
          tier: frontend
      template:
        metadata:
          labels:
            app: codestream-demo
            tier: frontend
        spec:
          containers:
          - name: codestream-demo
            image: automationbeta/codestream-demo:01
            ports:
            - containerPort: 80
              name: codestream-demo
          imagePullSecrets:
          - name: dockerhub-secret
    注: Kubernetes YAML ファイルは、次のユースケースの例のように、CD スマート パイプライン テンプレートでも使用されます。

    スマート テンプレートにファイルを適用するには、[選択] をクリックし、Kubernetes YAML ファイルを選択します。次に、[プロセス] をクリックします。使用可能なサービスと展開環境がスマート パイプライン テンプレートに表示されます。サービス、クラスタ エンドポイント、および展開方法を選択します。たとえば、Canary 展開モデルを使用するには、[Canary] を選択し、展開フェーズの割合を入力します。

    スマート パイプライン テンプレートでは、Canary、ローリング アップグレード、ブルーグリーン継続的インテグレーションおよび継続的デリバリ展開を処理できます。

スマート パイプライン テンプレートを使用してブルーグリーン展開のパイプラインを作成する例については、Code Stream のアプリケーションをブルーグリーン展開に展開する方法を参照してください。

スマート パイプライン テンプレートを使用して CICD パイプラインを作成する方法

すべての情報を収集して必要な設定を行った後、次のように CICD スマート パイプライン テンプレートからパイプラインを作成します。

パイプラインで、[新しいパイプライン] > [スマート テンプレート] の順に選択します。

パイプラインを作成する場合は、スマート パイプライン テンプレートを使用できます。

CICD スマート パイプライン テンプレートを選択します。

CICD スマート パイプライン テンプレート カードをクリックして、継続的インテグレーションおよび継続的デリバリ パイプラインを作成できます。

テンプレートに入力し、作成されるステージでパイプラインを保存します。最終的な変更を行う必要がある場合は、パイプラインを編集して保存できます。

CICD スマート パイプライン テンプレートで作成するパイプラインには、アプリケーションをビルドして公開し、展開および本番環境に配信するステージが含まれます。

次に、パイプラインを有効にして実行します。実行後、以下の点を確認できます。

  • パイプラインが正常に完了したことを確認します。[実行] をクリックし、パイプラインを検索します。正常に完了しなかった場合は、エラーを修正して再度実行します。
  • Git Webhook が正しく動作していることを確認します。Git の [Activity] タブにイベントが表示されます。[トリガ] > [Git] > [アクティビティ] の順にクリックします。
  • パイプライン ダッシュボードで、トレンドを確認します。[ダッシュボード] をクリックし、パイプライン ダッシュボードを検索します。カスタム ダッシュボードを作成して、他の KPI もレポートできます。

詳細な例については、コードを my GitHub または GitLab リポジトリから Code Stream の自分のパイプラインに継続的に統合する方法を参照してください。