Additional resource types used by your pipeline.

Each resource in a pipeline has a `type`. The resource's type determines what versions are detected, the bits that are fetched when used for a `get` step, and the side effect that occurs when used for a `put` step.

Out of the box, Concourse comes with a few resource types to cover common CI use cases like dealing with Git repositories and S3 buckets.

Beyond these core types, each pipeline can configure its own custom types by specifying `resource_types` at the top level. Each custom resource type is itself defined as a resource that provides the container image for the custom resource type (see Implementing a Resource). You will almost always be using the `docker-image` resource type when doing this.

The following example extends a Concourse pipeline to support use of the `pull-request` resource type and then uses it within the pipeline:

    resource_types:
    - name: pull-request
      type: docker-image
      source:
        repository: jtarchie/pr

    resources:
    - name: atomy-pr
      type: pull-request
      source:
        repo: vito/atomy
        access_token: {{access-token}}

    jobs:
    - name: atomy-pr-unit
      plan:
      - get: atomy-pr
      - put: atomy-pr
        params:
          path: atomy-pr
          status: pending
      - task: unit
        file: atomy-pr/ci/unit.yml
        on_success:
          put: atomy-pr
          params:
            path: atomy-pr
            status: success
        on_failure:
          put: atomy-pr
          params:
            path: atomy-pr
            status: failure

Custom resource types can override the core resource types, and can be defined in terms of each other. Also, a custom resource type can use the core type that it's overriding. This is useful if you want to e.g. provide your own custom `docker-image` resource, by overriding the core one (and using it one last time for the override itself), and then using it for all other custom resource types.