Resources are the basic building blocks of your pipelines. They typically contain information needed for jobs to execute and sometimes they also are used to store information produced by a job.
A key characteristic of resources is that they can be versioned. A specific version of a resource is immutable, i.e. it returns the same result every single time it is fetched.
They are predominantly used for the following reasons:
- Provide 3rd party secrets to the job runtime so that environment is configured with the right level of access rights to connect to external services. E.g., integration or cliConfig resources can be used to provide credentials safely.
- Supply information to set the context for the jobs to execute. E.g., params resources commonly store environment variables and version resources keep track of changing versions.
- A trigger to changes to the repo on the source control system. E.g., a gitRepo, ciRepo, or syncRepo can trigger jobs whenever the source code is updated.
- A trigger to execute a job. E.g., a time resource will trigger a job at set times.
- Act as an entity to store stateful information produced during the execution of a job. E.g., state resources are commonly used to share information between jobs. A job will also often update an image resource with a new tag.
Resources are defined in
shippable.resources.yml as shown below:
resources: - name: <string> type: <resource type name> integration: <string> pointer: <object> seed: <object> version: <object>
For a detailed explanation of each field, read shippable.resources.yml.
A key strength of a resource is that it is versioned. This is critical if you want to be able to roll back, upgrade, or pin the resource to a particular point of time. User-defined key-value pairs can be stored as part of resource versions.
These are the types of resources that Shippable Workflow supports:
|ciRepo||Represents a CI project for a git repo|
|cliConfig||Configuration information for command-line tools|
|cluster||Cluster defines a collection of servers|
|dockerOptions||Configuration information for a container|
|file||Location of a file|
|gitRepo||Represents a source code repo|
|image||Represents a package on a registry|
|integration||Encrypted connection information to 3rd party services|
|loadBalancer||Represents load-balancer resources offered by cloud providers|
|notification||Resource to send alerts from the workflow|
|params||Environment variables used to prime your job runtime|
|replicas||Number of copies of the service to run|
|syncRepo||Used to define DevOps Assembly Lines|
|time||Trigger a job at a specific day and time|
If you need a resource that is not listed above, send us an email at email@example.com.