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 が実行可能なスクリプトであることです。