Tektonパイプラインの環境プロパティとリソース

以下の情報およびリソースは、 IBM Cloud® Continuous Delivery のTekton PipelineRun に対してデフォルトで利用可能です。

PipelineRun アノテーション

表 1 は、Tekton PipelineRun に含まれているアノテーションについて説明しています。

PipelineRun アノテーション
実行アノテーション 説明
devops.cloud.ibm.com/build-number パイプラインのビルド番号。 この番号は、すべてのトリガーからのパイプライン実行の累積合計です。
devops.cloud.ibm.com/listener このパイプラインの実行を開始したトリガーにマッピングされているTektonの eventlistener です。
devops.cloud.ibm.com/pipeline-id この実行に使用されるパイプラインの固有 ID。
devops.cloud.ibm.com/trigger-name このパイプライン実行を開始したトリガーの名前。
devops.cloud.ibm.com/trigger-type このパイプライン実行を開始したトリガーのタイプ。 タイプは、manual、timer、scm、generic のいずれかになります。
devops.cloud.ibm.com/triggered-by トリガーを開始したユーザー。 この値は、 manual トリガーの場合は「 実行 」ボタンを押したユーザーの IBMId、 timer トリガーの場合はトリガーを最後に保存したユーザーの IBMId、 scm トリガーの場合は「 Git 」アクションを実行したユーザーの IBMId です。 generic トリガーの場合には、この値は空になります。
devops.cloud.ibm.com/pipeline-run-url このパイプライン実行の詳細ページの URL。
devops.cloud.ibm.com/tekton-pipeline このパイプライン実行の固有 ID。

アノテーションへのアクセス

パイプライン定義 yaml ファイルのタスクからアノテーションにアクセスできます。 以下の例は、devops.cloud.ibm.com/build-number アノテーションにアクセスする方法を示しています。 そのアノテーションを環境変数として指定するには、表1にある実行アノテーションのいずれかに置き換えてください。 PipelineRun アノテーション。

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: simple-task
spec:
  steps:
    - name: simple-step
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: BUILD_NUMBER
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['devops.cloud.ibm.com/build-number']
      command: ["bash", "-c"]
      args:
        - echo $BUILD_NUMBER;
          echo "COMPLETED"

PipelineRun ConfigMap および Secret

Continuous Delivery のTektonリソース「 PipelineRun 」は、タスクで利用可能な特定の ConfigMap および Secret オブジェクトを作成します。 次の表では、各オブジェクトについて説明しています。

PipelineRun ConfigMaps そして、その秘密
オブジェクト 種別 説明
environment-properties ConfigMap セキュリティ保護されていないすべてのパイプラインプロパティが含まれています。 キーは、デリバリーパイプラインの「 プロパティ 」ページで定義されたプロパティ名です。
secure-properties Secret 選択したフィールドにセキュリティ保護された値が含まれている Tool integration のプロパティを含め、すべてのセキュリティ保護されたパイプラインのプロパティが含まれます。 キーは、デリバリーパイプラインの「 プロパティ 」ページで定義されたプロパティ名です。
event-parameters ConfigMap scm および generic のトリガータイプに関するトリガーイベントデータが含まれています。 eventHeader キーには、受信イベントの HTTP ヘッダーが格納されており、 eventBody キーにはイベントのペイロード本文が格納されています。 この「 ConfigMap 」はオプションであり、「 manual 」や「 timer 」のトリガーでは存在しません。
toolchain ConfigMap ツールチェーンとその統合について記述したツールチェーン定義ファイルが含まれています。

ConfigMap または Secret にアクセスする場合、パイプラインを正常に実行できるように適切なオブジェクト名とリファレンスの場所を把握していることを確認してください。

個別の値へのアクセス

Task の個別のキー値にアクセスできます。 以下のコードスニペットでは、サンプルとして「 apikey 」というプロパティ名(セキュアプロパティを含む)と、「 environment 」というプロパティ名(テキストプロパティを含む)を使用しています。 これらのプロパティ名は、デリバリーパイプラインの [ プロパティ ] ページで設定されます。

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-echo-props
spec:
  steps:
    - name: cm-show-props
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: SECURE_VALUE
          valueFrom:
            secretKeyRef:
              name: secure-properties
              key: apikey
        - name: ENVIRONMENT
          valueFrom:
            configMapKeyRef:
              name: environment-properties
              key: environment
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "environment from ConfigMap is >>";
          echo $ENVIRONMENT;
          echo "";
          echo -e "apikey from Secrets is >>";
          echo $SECURE_VALUE

すべての値へのアクセス

ConfigMap および Secret に記載されているすべてのキーと値のペアを、 Task 環境に追加することができます。 次の例でも、 event-parameters ConfigMap をボリュームとしてマウントし、トリガーイベントのヘッダーと本文にアクセスしています。 event-parameters は scm および generic のトリガーでのみ存在するため、 manual または timer のトリガーによる実行でタスクが失敗しないよう、このボリュームは「オプション」としてマークされています。

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-secrets-props
spec:
  steps:
    - name: cm-show-full-env
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      envFrom:
        - configMapRef:
            name: environment-properties
        - secretRef:
            name: secure-properties
      volumeMounts:
        - mountPath: /event-parameters
          name: event-parameters
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "The environment for this Step is ";
          env;
          echo "";
          echo -e "Event header is >>";
          cat /event-parameters/eventHeader || echo "No event header available";
          echo "";
          echo -e "Event body is >>";
          cat /event-parameters/eventBody || echo "No event body available"
  volumes:
    - name: event-parameters
      configMap:
        name: event-parameters
        optional: true

マネージドワーカー仮想マシンのサイジング

IBM のマネージドワーカープールを使用してパイプラインを実行すると、特定のデフォルトメモリを持つ VM が割り当てられます。 ほとんどのジョブは提供されたメモリで正常に実行できるが、特定のパイプラインは集中的なタスクのために追加のメモリを必要とする。

ユーザーは、タスクにラベルを指定して、特定のタスクに必要なメモリーが多い (または少ない) かどうかを示すことができます。 この機能により、リソースの使用に必要な特定の量のリソースを特定し、最終的にコストを節約することができます。

Tektonパイプライン内の特定のタスクにどの VM プロファイルを適用するかを指定するには、そのタスクに runtimeClassName ラベルを追加し、以下の VM のいずれかの値を指定します。 ラベルが指定されていない場合は、デフォルトの VM プロファイルが使用されます。

  • small: 2Gi
  • medium: 4Gi (デフォルト)
  • large: 8Gi

以下に例を示します。

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: task1
  labels:
    runtimeClassName: medium
    and so on.

TriggerTemplate の一部として、 PipelineRun で同じ構成を指定することもできます。 PipelineRun で runtimeClassName を指定することで、ユーザーはタスク定義を変更することなく、使用したい VM プロファイルを選択できます。

以下に例を示します。

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  generateName: pipeline-run-
spec:
  pipelineRef:
    name: pipeline
  taskRunSpecs:
    - pipelineTaskName: task1
      taskPodTemplate:
        runtimeClassName: medium

ログの形式

このセクションでは、 PipelineRun 詳細ページで提供されるログビューアの特徴と機能、およびこれらの特徴を利用するためにサポートされるログフォーマットについて説明します。

基本機能

ログビューアは、ANSIカラーコードとテキストスタイルをサポートし、ログコンテンツ内のURLを自動的に検出し、新しいウィンドウで開くクリック可能なリンクとして表示します。

ツールバー

ログビューアに表示されるツールバーには、以下のような追加機能がある:

  • 最大化:タスクリストとランヘッダーを非表示にすることで、ログビューアで使用できる領域を増やす。 これにより、ユーザーはアプリの他の部分から気が散ることをなくし、ログの内容に集中することができる。
  • ユーザー設定:ブラウザにローカルに保存され、アプリ内のすべてのログに適用されます。 詳しくは、以下のセクションを参照してください。

タイムスタンプ

IBM-マネージドワーカー、およびエージェントバージョン 0.20.5 以降のプライベートワーカーは、デフォルトでタイムスタンプを先頭に持つログ行を生成します。 ユーザーは、ログビューアのツールバーの設定メニューでオプションを切り替えることにより、ログビューアでこれらのタイムスタンプを表示または非表示にすることができる。

表示されるタイムスタンプは、ユーザーのブラウザ設定に基づいてローカライズされ、Workerから受け取った生のタイムスタンプ値は、ホバー時にツールチップとして提供されます。

ログ・レベル

ログ・ビューワは、ログ行を解析して関連するログ・レベルを検出し、ログを消費しやすくするために、それに応じてログ行を装飾する。 対応している形式は以下の通りです。

<timestamp> ::<level>::<message>
  • timestamp は労働者によって提供される
  • level の一つである debug``info``notice``warning``error trace
    • debug ログ trace はデフォルトで非表示になっています
    • 明示的な level のないログ行は、 info とみなされますが、ユーザがサポートされているログ形式を使用していない場合、UIで冗長性を避けるためにログレベルバッジは表示されません
  • message はその行にあるその他の内容で、書式設定などのためのANSIコードを含むことができる。

例えば、以下のスニペットは、 warning レベルのログ行を出力する:

echo '::warning::Something that may require attention but is non-blocking…'

表示されるログレベルは、ログビューアツールバーの設定メニューで変更できます。

ロググループ

ログレベルに加えて、ログビューアは、ログ内の折りたたみ可能なグループもサポートする。 対応している形式は以下の通りです。

<timestamp> ::group::<message>
…
<timestamp> ::endgroup::

group 、グループの始まりを示す。 message の内容は、グループの現在の状態(展開または折りたたみなど)を示すインジケータとともに、グループのタイトル/概要として表示されます。 サマリーをクリックすると、グループの状態が切り替わる。

ログが表示されるとき、ステップがまだ進行中でない限り、グループはデフォルトで折りたたまれた状態で表示される。 ユーザーは必要に応じてグループを展開したり折りたたんだりすることができ、その状態はユーザーが別のビューに移動するまで維持される。

group、 endgroup、およびログレベルコマンドは相互に排他的である。 ただし、グループ内のログは通常通りログレベルを使用できる。

グループのネストはサポートされていません。 group コマンドは、それ以前に終了していないグループを暗黙のうちに終了させる。

例えば、以下のスニペットは、 info レベルのメッセージを多数含む、要約「Additional config」を持つロググループを出力する:

echo '::group::Additional config'
echo 'This extends the base config'
echo '::info:: More info about the config…'
echo '::endgroup::'

Tekton デリバリー・パイプラインに関する詳細

Tekton および Continuous Deliveryについて詳しくは、 Tekton: A Modern Approach to Continuous Deliveryを参照してください。