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.[].env
とsteps.[].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
Chuma Takahiro