Tekton step向けスタートアップスクリプト

bashはログイン時に~/.bashrcなどのスタートアップスクリプトを実行します。 tekton$BASH_ENVを用いてステップ実行時にスタートアップスクリプトを実行できます。

configMapからbashスクリプトを供給する例は次のような定義になります(抜粋)。

apiVersion: tekton.dev/v1
kind: Task
spec:
  stepTemplate:
    env:
    - name: BASH_ENV
      value: /root/.bashrc
    volumeMounts:
    - name: startup-script
      mountPath: /root/.bashrc
      subPath: bashrc

  volumes:
  - name: startup-script
    configMap:
      name: startup-script

この例では、 spec.stepTemplateを用いてtask内の全てのステップでスタートアップスクリプトを実行する構成を想定しています。
一部のステップにのみ供給したい場合には、対象のsteps.[].envsteps.[].volumeMountsに同様の設定を追加します。

$BASH_ENVで指定したpathにスクリプトを置くだけの簡素な構成です。volumes.[].configMapから供給するスクリプトは一般的なbashスクリプトであるため、説明は省略します。

ステップ終了処理

bashのtrapを利用すると、ステップ終了時のEXITシグナルをトラップして終了処理も記述できます。
次のような処理をスタートアップスクリプトに追記しておきます。

function final_exec() {
  echo "step terminated."
}

trap 'final_exec' EXIT

この関数の冒頭で$?を参照すると直前ステップの終了ステータスが入っているようです。 このようにスタートアップスクリプトを定義すると、各ステップの前後に共通処理を定義できます。

⁋ 2024/12/11↻ 2024/12/18
中馬崇尋
Chuma Takahiro