Tasks
Harpoon’s mechanism for doing anything are tasks. By default Harpoon comes with a number of tasks as describe below:
Custom Tasks
You can add tasks within your container. For example:
---
images:
app:
commands:
- FROM some_image:3
- CMD startup_app
tasks:
run_app:
description: "Startup the app"
run_tests:
description: Run the unit tests
options:
bash: cd /app && rake tests
Each task has no required options but can be configured with action,
options, overrides, description and label.
If action or options are not specified then the task will just create the
image it’s defined under and run the default command.
If the action is specified and is just a string, then it will call that action
and give the image option as the name of this image. The available tasks are
those in https://github.com/realestate-com-au/harpoon/blob/master/harpoon/tasks.py
with a a_task decorator. For most cases, you just need the run task which
is the default value for action.
The tasks defined in these definitions will be shown when you do “harpoon –task list_tasks”.
You may also use extra arbitrary cli options for your tasks with {$@}:
---
images:
app:
commands:
...
tasks:
something:
options:
bash: cd /app && ./some_script.sh {$@}
Then say you run harpoon like:
$ harpoon --task something -- --an-option 1
Then it will start up the app container and run:
$ /bin/bash -c 'cd /app && ./some_script.sh --an-option 1'
Because everything that comes after a -- in the argv to harpoon will be
available as “$@”.