Task スクリプトを別ファイルとして指定する¶
Taskの inputs
は、2種類の入力を渡すことができます:
- 処理/テスト/コンパイル される 要件/依存関係
- 複雑な処理を実行するために予め実行される Task スクリプト
Concourse Task の一般的なパターンは、前セクション で行なった(uname
コマンドを引数 -a
で実行する)ような "直接コマンドを呼び出す" ものではなく、"複雑なシェルスクリプトを run:
する" ものです。
では、複製済のTaskスクリプト task-scripts/task_show_uname.sh
を使って、task-hello-world/task_ubuntu_uname.yml
を、新しいTask task-scripts/task_show_uname.yml
にリファクタリングしましょう。
cd ../task-scripts
fly -t tutorial execute -c task_show_uname.yml
task-scripts/task_show_uname.yml
は、Task スクリプトとして task-scripts/task_show_uname.sh
を指定します:
run:
path: /bin/sh
args: ["./task-scripts/task_show_uname.sh"]
./task-scripts/task_show_uname.sh
ファイルはどこから持ってきたのですか?
これまでのセクションで、私たちは inputs
に指定されたファイル・ディレクトリを Task に渡すことができると学びました。今回指定した Task ファイル task-scripts/task_show_uname.yml
は1つの inputs
を指定しています:
inputs:
- name: task-scripts
task-scripts
はローカル上のカレントディレクトリ task-scripts/
の名前が一致しているため、fly execute -i task-scripts=.
を指定する必要はありません。
そしてローカル上のカレントディレクトリのファイルは Concourse の Task コンテナにアップロードされ、task-scripts/
ディレクトリの中に配置されます。
したがって、ローカル上の task_show_uname.sh
ファイルが Concourse Task コンテナ内の task-scripts/task_show_uname.sh
として呼び出せるようになるのです。
ここでの唯一の要件は、task_show_uname.sh
が実行可能なスクリプトであることです。