inputs feature of a task allows us to pass in two types of inputs:
- requirements/dependencies to be processed/tested/compiled
- task scripts to be executed to perform complex behavior
A common pattern is for Concourse tasks to
run: complex shell scripts rather than directly invoking commands as we did in the Hello World tutorial (we ran
uname command with arguments
task-hello-world/task_ubuntu_uname.yml into a new task
task-scripts/task_show_uname.yml with a separated task script
cd ../task-scripts fly -t tutorial execute -c task_show_uname.yml
The former specifies the latter as its task script:
run: path: /bin/sh args: ["./task-scripts/task_show_uname.sh"]
Where does the
./task-scripts/task_show_uname.sh file come from?
From section 2 we learned that we could pass
inputs into the task. The task configuration
task-scripts/task_show_uname.yml specifies one input:
inputs: - name: task-scripts
task-scripts matches the current directory
task-scripts we did not need to specify
fly execute -i task-scripts=..
The current directory was uploaded to the Concourse task container and placed inside the
Therefore its file
task_show_uname.sh is available within the Concourse task container at
The only further requirement is that
task_show_uname.sh is an executable script.
N.B. For Windows users, some may see this error
uname: invalid option -- when you execute the fly command. This may have happened because when you downloaded the GitHub repo on Windows machine, Windows style line ending have been applied to the
task_show_uname.sh file. One way to fix that is to open up the file in Notepad++, click on "Edit->EOL Conversion->Unix". Save the file and execute the fly command again.