attempts Step Modifier

The total number of times a step should be tried before it should fail, e.g. 5 will run the step up to 5 times before giving up.

Attempts will retry on a Concourse error as well as build failure. When the number of attempts is reached and the step has still not succeeded then the step will fail.

The following will run the task and retry it up to 9 times (for a total of 10 attempts) if it fails:

- get: foo
- task: unit
  file: foo/unit.yml
  attempts: 10

When used in combination with timeout, the timeout applies to each step.

This semi-arbitary decision was made because often things either succeed in a reasonable amount of time or fail due to hanging/flakiness. In this case it seems more useful to allow each attempt the allotted timeout rather than have one very long attempt prevent more attempts.

- get: flake
- task: flaky-tests
  file: flake/integration.yml
  timeout: 10m
  attempts: 3