コンテンツにスキップ

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