Tools and Apps¶
DevStream treats everything as a concept named Tool:
- Each Tool corresponds to a DevStream plugin, which can either install, configure, or integrate some DevOps tools.
- Each Tool has its Name, InstanceID, and Options.
- Each Tool can have its dependencies, specified by the
dependsOn is an array of strings, each element being a dependency.
Each dependency is named in the format of "TOOL_NAME.INSTANCE_ID".
Sometimes, you have to define multiple Tools for a single app/microservice. For example, for a web application, you might need to specify the following tools:
- repository scaffolding
- continuous integration
- continuous deployment
If you have multiple apps to manage, you'd have to create many Tools in the config, which can be tedious and hard to read.
To manage multiple apps/microservices more easily, DevStream has another level of abstraction called Apps. You can define everything within one app (like the aforementioned repository scaffolding, CI, CD, etc.) with only a few config lines, making the config much easier to read and manage.
Under the hood, DevStream would still convert your Apps configuration into Tools definition, but you do not have to worry about it.
A DevStream App can refer to one or multiple elements of pipelineTemplates, which are mainly CI/CD definitions. In this way, the Apps definition can be shorter, sharing common CI/CD pipelines between multiple microservices.