パイプラインを構成するときは、必要なアクションに対してパイプラインが実行する特定タイプのタスクを追加します。各タスク タイプは別のアプリケーションと連携し、ユーザーのアプリケーションをビルド、テスト、配信するときにパイプラインを有効にします。

展開のためにリポジトリからアーティファクトを取得する必要がある場合でも、リモート スクリプトを実行する必要がある場合でも、チーム メンバーからユーザー操作の承認を得る必要がある場合でも、Code Stream ではパイプライン実行のために、ユーザーに適したタイプのタスク タイプを用意しています。

Code Stream では、さまざまなタイプのタスクでパイプラインの実行をキャンセルできます。パイプラインの実行で [キャンセル] をクリックすると、タスク、ステージ、またはパイプライン全体がキャンセル状態になり、パイプラインの実行がキャンセルされます。

次のタスクを使用しているとき、 Code Stream によってタスク、ステージ、またはパイプライン全体でパイプラインの実行をキャンセルできます。
  • Jenkins
  • SSH
  • PowerShell
  • ユーザー操作
  • パイプライン
  • クラウド テンプレート
  • vRO
  • ポーリング

Code Stream は、CI、カスタム統合、Kubernetes などのタスクに対するキャンセル動作をサードパーティ システムに伝達しません。Code Stream はタスクをキャンセル済みとしてマークし、タスクが終了するのを待つことなくステータスの取得をただちに停止します。サードパーティ システムではタスクが完了することも失敗することもありますが、Code Stream での実行は [キャンセル] をクリックするとただちに停止します。

パイプラインでタスクを使用する前に、対応するエンドポイントが使用可能であることを確認します。

表 1. 承認の取得または決定ポイントの設定
タスクのタイプ 機能 例と詳細
[ユーザー操作]

ユーザー操作タスクでは、いつパイプラインを実行し、承認のために停止する必要があるのかを制御する、必須の承認が有効になります。

パイプラインを実行して結果を確認する方法を参照してください。また、Code Stream でユーザー アクセスと承認を管理する方法も参照してください。

[条件]

決定ポイントを追加します。決定ポイントでは、パイプラインの実行を継続するか、または停止するかが条件式に基づいて決定されます。条件が true の場合、パイプラインは後続のタスクを実行します。false の場合、パイプラインは停止します。

条件タスクで変数バインドを使用して、Code Stream でパイプラインを実行または停止する方法を参照してください。

表 2. 継続的インテグレーションと展開の自動化
タスクのタイプ 機能 例と詳細
[クラウド テンプレート]

GitHub から自動クラウド テンプレートを展開してアプリケーションをプロビジョニングし、クラウド テンプレートの継続的インテグレーションおよび継続的デリバリ (CICD) を展開用に自動化します。

Code Stream の YAML クラウド テンプレートから展開するアプリケーションのリリースを自動化する方法を参照してください。
[CI]

CI タスクでは、レジストリ エンドポイントから Docker ビルド イメージを取得し、Kubernetes クラスタに展開することで、コードからパイプラインへの継続的インテグレーションが可能です。

CI タスクでは、ログの 100 行が出力として表示され、ログをダウンロードすると 500 行が表示されます。

CI タスクには、短期ポート 32768 ~ 61000 が必要です。

スマート パイプライン テンプレートを使用する前の Code Stream での CICD ネイティブ ビルドの計画を参照してください。

[カスタム]

カスタム タスクでは、Code Stream が自分のビルド、テスト、展開ツールと統合されます。

ビルド、テスト、展開用の独自のツールを Code Streamに統合する方法を参照してください。

[Kubernetes]

Kubernetes クラスタへのソフトウェア アプリケーションの展開を自動化します。

Kubernetes クラスタへの Code Stream のアプリケーションのリリースを自動化する方法を参照してください。

[パイプライン]

パイプラインをプライマリ パイプラインにネストします。パイプラインはネストされると、プライマリ パイプラインのタスクとして動作します。

ネストされたパイプラインには、プライマリ パイプラインの [タスク] タブでリンクをクリックして簡単に移動することができます。ネストされたパイプラインは、新しいブラウザ タブで開きます。

[実行] でネストされたパイプラインを検索するには、検索領域に nested と入力します。

表 3. 開発、テスト、展開アプリケーションの統合
タスク タイプ 機能... 例と詳細
[Bamboo]

展開の準備中にソフトウェアを継続的にビルド、テスト、および統合する Bamboo の継続的インテグレーション (CI) サーバと連携し、開発者が変更をコミットする際にコード ビルドをトリガします。Bamboo ビルドが生成するアーティファクトの場所を公開し、他のタスクでビルドと展開に使用するためにタスクでパラメータを出力できるようにします。

Bamboo サーバ エンドポイントに接続し、パイプラインから Bamboo ビルド プランを開始します。

[Jenkins]

ソース コードのビルドおよびテスト、テスト ケースの実行、カスタム スクリプトの使用が可能な Jenkins ジョブをトリガします。

Code Stream を Jenkins と統合する方法を参照してください。

[TFS]

パイプラインを Team Foundation Server に接続して、コードのビルドとテストを実行する構成済みのジョブを含むビルド プロジェクトの管理と呼び出しが可能になります。

Code Stream でサポートされる Team Foundation Server のバージョンについては、Code Stream でのエンドポイントとはを参照してください。

[vRO]

vRealize Orchestrator で事前定義またはカスタム ワークフローを実行して、Code Stream の機能を拡張します。

Code Stream は、vRealize Orchestrator の基本認証とトークンベースの認証をサポートします。Code Stream は、API トークンを使用して vRealize Orchestrator クラスタの認証と検証を行います。トークンベースの認証では、Code Stream はクラウド拡張性プロキシを使用する vRealize Orchestrator エンドポイントをサポートします。そのため、Code Stream で、クラウド拡張性プロキシを使用する vRealize Orchestrator エンドポイントを使用してワークフローをトリガできます。

Code Streamを vRealize Orchestrator と統合する方法を参照してください。

表 4. API を使用した他のアプリケーションの統合
タスク タイプ 機能... 例と詳細
[REST]

Code Stream を REST API を使用する他のアプリケーションと連携して、相互に連携可能なソフトウェア アプリケーションを継続的に開発および提供できるようにします。

REST API を使用して Code Stream を他のアプリケーションと統合する方法を参照してください。

[ポーリング]

REST API を呼び出し、パイプライン タスクが終了基準を満たして完了するまでポーリングします。

Code Stream 管理者は、ポーリング数を最大 10,000 に設定できます。ポーリング間隔は 60 秒以上にする必要があります。

[失敗時に続行] チェック ボックスをオンにすると、回数または間隔がこれらの値を超えた場合でも、ポーリング タスクは引き続き実行されます。

POLL Iteration Count:パイプラインの実行に表示され、POLL タスクが URL からの応答を要求した回数が表示されます。たとえば、POLL 入力が 65 で、POLL 要求が実際に実行された回数が 4 の場合、パイプライン実行出力の反復回数は 4(65 件中)と表示されます。

REST API を使用して Code Stream を他のアプリケーションと統合する方法を参照してください。

表 5. リモートおよびユーザー定義のスクリプトの実行
タスクのタイプ 機能 例と詳細
[PowerShell]

PowerShell タスクを使用すると、Code Stream は、リモート ホスト上でスクリプト コマンドを実行できます。たとえば、スクリプトで、テスト タスクを自動化したり、管理タイプのコマンドを実行したりできます。

スクリプトは、リモートとユーザー定義のいずれも可能です。HTTP または HTTPS を介した接続や、TLS の使用も可能です。

Windows ホストでは、winrm サービスが構成されている必要があります。また、winrm では、MaxShellsPerUserMaxMemoryPerShellMB が構成されている必要があります。

PowerShell タスクを実行するには、リモート Windows ホストへのアクティブなセッションが必要です。

[PowerShell コマン ドラインの長さ]

base64 PowerShell コマンドを入力する場合は、コマンド全体の長さを計算する必要があることに注意してください。

Code Stream パイプラインは base64 PowerShell コマンドをエンコードして、別のコマンド内にラッピングするため、コマンドの全体の長さが増加します。

PowerShell winrm コマンドで許可される最大長は 8192 バイトです。PowerShell タスクがエンコードおよびラッピングされている場合は、コマンド長の上限が低くなります。したがって、PowerShell コマンドを入力する前に、コマンド長を計算する必要があります。

Code Stream PowerShell タスクのコマンド長の上限は、元のコマンドを base64 でエンコードした後の長さによって決まります。コマンド長は次のように計算されます。

3 * (length of original command / 4)) - (numberOfPaddingCharacters) + 77 (Length of Write-output command)

Code Stream のコマンド長は、上限の 8192 よりも小さくする必要があります。

MaxShellsPerUserMaxMemoryPerShellMB を設定する場合:

  • MaxShellsPerUser の許容値は、各パイプラインには 5 個の PowerShell タスクがある 50 個の同時実行パイプラインには 500 です。値を設定するには、次を実行します:winrm set winrm/config/winrs '@{MaxShellsPerUser="500"}'
  • MaxMemoryPerShellMB の許容可能なメモリ値は 2048 です。値を設定するには、次を実行します:winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="2048"}'

このスクリプトは、別のパイプラインが使用できる応答ファイルに出力を書き込みます。

[SSH]

SSH タスクでは、Bash シェル スクリプト タスクがリモート ホスト上でスクリプト コマンドを実行できます。たとえば、スクリプトで、テスト タスクを自動化したり、管理タイプのコマンドを実行したりできます。

スクリプトは、リモートとユーザー定義のいずれも可能です。HTTP または HTTPS を介した接続が可能で、プライベート キーまたはパスワードが必要です。

Linux ホスト上で SSH サービスが構成されている必要があります。また、MaxSessions の SSHD 設定は 50 にする必要があります。

複数の SSH タスクを同時に実行する場合は、SSH ホストの MaxSessionsMaxOpenSessions を増やします。MaxSessions および MaxOpenSessions の設定を変更する必要がある場合は、vRealize Automation Cloud インスタンスを SSH ホストとして使用しないでください。

SSH タスクは、OpenSSH タイプのプライベート キーをサポートしていません。次のいずれかの方法を使用して、パブリック/プライベート キー ペアを生成します。
  • Windows マシンでは、PuTTYgen を使用してキー ペアを生成します。
  • Mac または Linux マシンでは、ssh -V を使用して SSH のバージョンが 7.8 より前であることを確認してから、ssh -keygen を使用してターミナル ウィンドウでキー ペアを生成します。
注: 生成されたキーが BEGIN OPENSSH PRIVATE KEY と一緒に表示されないことを確認します。
生成されたパブリック キーがリモート マシンの認証済みキーである場合は、次のいずれかの記事を参照して OpenSSH プライベート形式を変更します。

SSH タスクを構成する場合は、プライベート キーをプレーン テキストで入力する必要があります。キーを変数または入力として保存すると、キーの形式が変更され、パイプライン タスクの実行は失敗します。

スクリプトは、リモートとユーザー定義のいずれも可能です。たとえば、スクリプトは次のようになります。

message="Hello World" echo $message

このスクリプトは、別のパイプラインが使用できる応答ファイルに出力を書き込みます。