Code Stream に継続的インテグレーションおよび継続的デリバリ (CICD) パイプラインを作成するには、手動でステージとタスクを追加します。CICD ネイティブ ビルドを計画するには、必要な情報を収集し、パイプラインを作成して、そのパイプラインにステージとタスクを手動で追加します。

パイプラインの継続的インテグレーション (CI) ステージと継続的デリバリ (CD) ステージの両方を計画する必要があります。パイプラインを作成して実行した後、その実行のトレンドを監視できます。

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

Code Stream パイプライン ワークスペースでは、継続的インテグレーション タスクとカスタム タスクで Docker と Kubernetes がサポートされます。

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

外部および内部の要件の計画

パイプラインの CI ステージおよび CD ステージを計画するには、パイプラインを作成する前に実行する必要がある次の要件を満たす必要があります。

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

この例の計画からパイプラインを作成するには、Docker ホスト、Git リポジトリ、Maven のほか、後処理ビルド ツールをいくつか使用します。

必要となるエンドポイントとリポジトリ:

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

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

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

CICD パイプラインを作成してワークスペースを設定する方法

パイプラインを作成してから、ワークスペース、パイプライン入力パラメータ、およびタスクを設定する必要があります。

パイプラインを作成するには、[パイプライン] > [新しいパイプライン] > [空白のキャンバス] の順にクリックします。

パイプラインを作成するとき、空白のキャンバスを使用できます。

[ワークスペース] タブで、継続的インテグレーション情報を入力します。

  • Docker ビルド ホストを含めます。
  • ビルダ イメージの URL を入力します。
  • イメージ レジストリ エンドポイントを選択して、そのエンドポイントからパイプラインがイメージをプルできるようにします。コンテナが CI タスクを実行し、イメージを展開します。レジストリに認証情報が必要な場合は、まずイメージ レジストリ エンドポイントを作成する必要があります。次に、ここでそれを選択して、そのレジストリからホストがイメージをプルできるようにします。
  • キャッシュする必要があるアーティファクトを追加します。ビルドが正常に完了した場合は、ディレクトリなどのアーティファクトが依存関係としてダウンロードされます。キャッシュは、このようなアーティファクトが配置される場所です。たとえば、依存関係のあるアーティファクトには、Maven の .m2 ディレクトリや、Node.js の node_modules ディレクトリなどがあります。これらのディレクトリは、パイプライン実行をまたがってキャッシュされるため、ビルドの時間が短縮します。

    パイプラインを手動で作成する場合は、ワークスペース タブでパイプラインのワークスペースを設定します

[入力] タブで、パイプラインの入力パラメータを構成します。

  • パイプラインが Git、Gerrit、または Docker トリガ イベントからの入力パラメータを使用する場合は、自動挿入パラメータのトリガ タイプを選択します。イベントには、Gerrit または Git のサブジェクトの変更、または Docker のイベント所有者名を含めることができます。パイプラインでイベントから渡された入力パラメータを使用しない場合は、自動挿入パラメータを [なし] に設定します。
  • パイプラインの入力パラメータに値と説明を適用するには、縦に並んだ 3 つのドットをクリックし、[編集] をクリックします。入力した値は、タスク、ステージ、通知への入力値として使用されます。
  • パイプラインの入力パラメータを追加するには、[追加] をクリックします。たとえば、各実行でデフォルト値を表示する approvers を追加できますが、ランタイムに別の承認者でオーバーライドする可能性があります。
  • 挿入されたパラメータを追加または削除するには、[挿入したパラメータの追加/削除] をクリックします。たとえば、使用されていないパラメータを削除して結果ページの不要な情報を減らし、使用されている入力パラメータのみを表示することができます。

    CICD パイプラインを手動で作成する場合は、入力 タブで入力パラメータを設定します。

パイプラインを設定してコードをテストします。

  • CI タスクを追加して設定します。
  • コードに mvn test を実行するための手順を含めます。
  • タスクの実行後に問題を調べるには、JUnit および JaCoCo、FindBugs、Checkstyle などの後処理ビルド ツールを実行します。

    コードをテストするには、CI タスクに手順と後処理ビルド ツールを設定します。

パイプラインを設定してコードをビルドします。

  • CI タスクを追加して設定します。
  • コードに mvn clean install を実行する手順を含めます。
  • アーティファクトを保持する JAR の場所とファイル名を含めます。

    コードをビルドするには、CI タスクに手順を追加します。

パイプラインを設定してイメージを Docker ホストに公開します。

  • CI タスクを追加して設定します。
  • イメージのコミット、エクスポート、ビルド、プッシュを行う手順を追加します。
  • 次のタスクで使用するために IMAGE のエクスポート キーを追加します。

    Docker ホストにイメージを公開するには、CI タスクに手順とエクスポート キーを追加します。

ワークスペース、入力パラメータ、テスト タスク、およびビルド タスクを設定したら、パイプラインを保存します。

パイプラインを有効にして実行する方法

ステージとタスクを使用してパイプラインを構成したら、パイプラインを保存して有効にすることができます。

次に、パイプラインが実行されて終了するまで待機して、正常に完了したことを確認します。正常に完了しなかった場合は、エラーを修正して再度実行します。

パイプラインが正常に完了したら、次の点を確認します。

  • パイプラインの実行状況を確認し、タスクの実行手順の結果を表示します。
  • パイプライン実行のワークスペースで、コンテナおよびクローン作成された Git リポジトリに関する詳細を見つけます。
  • ワークスペースで、後処理ツールの結果を確認し、エラー、コード カバレッジ、バグ、およびスタイルの問題がないか確認します。
  • アーティファクトが保持されていることを確認します。また、イメージがイメージ名と値を使用してエクスポートされたことを確認します。
  • Docker リポジトリに移動し、パイプラインがコンテナを公開していることを確認します。

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